基本上,我想组合来自两个单元格的值,然后在单击按钮后将其显示在另一个新单元格中。棘手的部分是每当我输入一个新值时,它应该显示在下一行。例如,我将结合A1和B1的值并将其传递给C1。下次我重新输入A1和B1时,新值应传递给C2。 这是我写的代码:
Private Sub CommandButton2_Click()
Dim count As Integer
Dim rowNo As String
Dim val As String
Dim val2 As String
Dim sum As String
count = 1
rowNo = "C" + CStr(count)
If (Range("A1") <> "" And Range("B1") <> "") Then
val = Range("A1")
val2 = Range("B1")
sum = val + "/" + val2
Worksheets("Sheet1").Range(rowNo).Value = sum
count = count + 1
End If
End Sub
我是excel VBA的新手,上面的代码只在A1中写入值,当我重新输入值时它没有进入下一行,有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
除了回答您的具体问题之外,我还会在您的代码中添加一些(希望有用的)评论。
完全限定范围很方便,例如,使用Worksheets("Sheet1").Range
代替Range
,请参阅this explanation。
要选择Range
,您可以使用直接寻址(如Chris nielsen的评论)或其他选项,Offset
,这里可能很方便。
您的代码似乎总是转到同一个目标单元rowNo
C1,因为count
重置为1.您必须让Sub
知道在哪里放置结果,这是关键。我想最安全的选择是让工作表中的一个单元格设置为包含该信息,并让Sub
读取它。如果你知道C列只包含你想要的结果,并且那些数据在那里是连续的,那么你可以使用下面的代码,它代表了这里的所有项目。
定义变量作为参考通常很方便,例如Dim rng as Range
和Set rng = Worksheets("Sheet1").Range...
以下代码应该有效。
Private Sub CommandButton2_Click()
Dim val As String
Dim val2 As String
Dim sum As String
Dim rng As Range
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
With Worksheets("Sheet2")
If (IsEmpty(.Range("C1"))) Then
Set rng = .Range("C1")
Else
' There are other options to find the last cell
Set rng = .Cells(.Rows.count, "C").End(xlUp).Offset(1, 0)
End If
If (ws.Range("A1") <> "" And ws.Range("B1") <> "") Then
val = ws.Range("A1")
val2 = ws.Range("B1")
' Added ' to prevent sum being converted into a date
'sum = "'" + val + "/" + val2
sum = "'" & val & "/" & val2
rng.Value = sum
End If
End With
End Sub
PS:根据工作表的内容,选择目标范围的方式有一些变化。
答案 1 :(得分:0)
尝试
Worksheets("Sheet1").Range(rowNo).Value = sum