每当工作表1的单元格B2中的值更改时,该值就会被复制并粘贴到下一个空白单元格的工作表2列A中。 我需要更改此值以将值粘贴到第2行,即A2,B2,C2。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
a = Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row + 1
Sheets("Sheet2").Range("A" & a).Value =
Sheets("Sheet1").Range("B2").Value
End If
End Sub
答案 0 :(得分:2)
这是你的追求吗?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim v_target_row As Integer
If Target.Address = "$B$2" Then
v_target_row = 2
If Sheets("Sheet2").Cells(v_target_row, 1) = "" Then
a = 0
Else
a = Sheets("Sheet2").Cells(v_target_row, Sheets("Sheet2").Columns.Count).End(xlToLeft).Column
End If
Sheets("Sheet2").Cells(v_target_row, a + 1) = Sheets("Sheet1").Range("B2").Value
End If
End Sub
答案 1 :(得分:1)
在评论中为请求添加此答案。
您首先要创建一个工作表-可以是隐藏工作表-此代码将为您完成此操作,但是可以随时手动进行操作。
Sub Create_Hidden_Control_sheet()
Dim ws As Worksheet
With ThisWorkbook
Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
End With
ws.Name = "Control"
ws.Visible = xlSheetVeryHidden
ws.Range("A1") = "Last cell used"
ws.Range("B1") = 0
End Sub
您将在此工作表的单元格B1中存储最后使用的列。
您将需要更改worksheet_change以执行与此类似的操作
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As Integer
If Target.Address = "$B$2" And Target.Value > 0 Then
a = Sheets("Control").Range("B1") + 1
If a > 10 Then
a = 1
End If
Sheets("Sheet2").Cells(2, a) = Sheets("Sheet1").Range("B2").Value
Sheets("Control").Range("B1") = a
End If
End Sub