在Excel VBA中将单元格中的值组合并传递给另一个

时间:2013-12-21 08:28:54

标签: excel vba excel-vba

基本上,我想组合来自两个单元格的值,然后在单击按钮后将其显示在另一个新单元格中。棘手的部分是每当我输入一个新值时,它应该显示在下一行。例如,我将结合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中写入值,当我重新输入值时它没有进入下一行,有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

除了回答您的具体问题之外,我还会在您的代码中添加一些(希望有用的)评论。

  1. 完全限定范围很方便,例如,使用Worksheets("Sheet1").Range代替Range,请参阅this explanation

  2. 要选择Range,您可以使用直接寻址(如Chris nielsen的评论)或其他选项,Offset,这里可能很方便。

  3. 您的代码似乎总是转到同一个目标单元rowNo C1,因为count重置为1.您必须让Sub知道在哪里放置结果,这是关键。我想最安全的选择是让工作表中的一个单元格设置为包含该信息,并让Sub读取它。如果你知道C列只包含你想要的结果,并且那些数据在那里是连续的,那么你可以使用下面的代码,它代表了这里的所有项目。

  4. 定义变量作为参考通常很方便,例如Dim rng as RangeSet rng = Worksheets("Sheet1").Range...

  5. 以下代码应该有效。

    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