如何解决此代码将值复制到列中?

时间:2019-01-09 08:50:28

标签: excel vba

每当工作表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

2 个答案:

答案 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