在Excel VBA中合并并将值从单元格传递到另一个单元格
基本上,我希望合并两个单元格中的值,然后在单击按钮后将其显示在另一个新单元格中。棘手的是每次我输入一个新值时,它都会显示在下一行。例如,我将组合A1和B1中的值,并将其传递给C1。下次我重新输入A1和B1时,新值应传递给C2。 以下是我编写的代码:在Excel VBA中合并并将值从单元格传递到另一个单元格,vba,excel,Vba,Excel,基本上,我希望合并两个单元格中的值,然后在单击按钮后将其显示在另一个新单元格中。棘手的是每次我输入一个新值时,它都会显示在下一行。例如,我将组合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
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
Private子命令按钮2\u单击()
将计数设置为整数
暗罗诺为弦
作为字符串的Dim val
Dim val2作为字符串
点心串
计数=1
rowNo=“C”+CStr(计数)
如果(范围(“A1”)和范围(“B1”)),则
val=范围(“A1”)
val2=范围(“B1”)
总和=val+“/”+val2
工作表(“表1”)。范围(行号)。值=总和
计数=计数+1
如果结束
端接头
我是excel VBA新手,上面的代码只在A1中写入值,当我重新输入值时,它没有转到下一行,有人能帮我解决这个问题吗?试试看
Worksheets("Sheet1").Range(rowNo).Value = sum
除了回答您的具体问题外,我还将对您的代码添加一些(希望有用)注释
工作表(“表1”)。范围而不是范围,请参阅
范围
,您可以使用直接寻址(如chris nielsen的评论)或其他选项,如偏移量
,此处可能比较方便count
被重置为1,因此您的代码似乎总是会转到同一目标单元格rowNo
C1。您必须让您的Sub
知道将结果放置在何处,这是关键。我想最安全的选择是将工作表中的一个单元格设置为包含该信息,然后让您的Sub
读取该信息。如果您知道C列只包含您想要的结果,并且数据在那里是连续的,那么您可以使用下面的代码,它说明了这里的所有项目Dim rng as Range
和Set rng=工作表(“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
Private子命令按钮2\u单击()
作为字符串的Dim val
Dim val2作为字符串
点心串
变暗rng As范围
将ws设置为工作表
设置ws=工作表(“表1”)
带工作表(“表2”)
如果(IsEmpty(.Range(“C1”)),则
设置rng=.Range(“C1”)
其他的
'还有其他选项可用于查找最后一个单元格
设置rng=.Cells(.Rows.count,“C”).End(xlUp).Offset(1,0)
如果结束
如果(ws.Range(“A1”)和ws.Range(“B1”)),则
val=ws.范围(“A1”)
val2=ws.范围(“B1”)
“已添加”以防止总和转换为日期
'sum=“”+val+“/”+val2
sum=“”&val&“/”&val2
rng.值=总和
如果结束
以
端接头
PS:根据工作表的内容,选择目标范围的方式有一些变化。Thx,现在可以工作了~但是,当我在单元格中重新输入值时,它不会转到下一行。你知道为什么吗?我只是意识到,每次单击按钮时,它都会通过“计数=1”。有没有其他方法可以避免这种情况?当我在单元格中重新输入值时,它不会转到下一行。它向单元格写入一个值,即故事结束。如果要更改活动选择,请编写更多代码。提示:
Range(“您的范围”)。选择
将值与sum=val+“/”+val2
组合时,结果可能会自动视为日期,并相应地格式化目标单元格。您可能需要明确地采取行动来防止/恢复这种情况。这太棒了!我学到了一些新东西,非常感谢!顺便说一句,如果我想检索表1中的A1和B1并在表2中的C1中显示它,我应该怎么做?我想我需要把每一张纸都标出来,而不是用语句来定义它?嗯,我想我明白了!谢谢你,祝你今天愉快@user1805430-请检查更新的代码。您可以在Sheet1上使用…以为基础,并明确指定Sheet2(例如,使用ws
)。@user1805430-尤其是因为您将使用不同的工作表,请不要忘记。