使用VBA使用当前工作表中对活动单元格的相对引用来设置不同工作表中特定单元格的值

时间:2013-12-16 19:07:33

标签: excel vba

E3是公司名称的下拉列表,在同一张表格中,我有一个表格,用户将输入5个属性的信息。我正在尝试编写一个宏,它将获取用户输入并将其复制到具有矩阵的不同工作表,其中列A是公司名称,列B到列F是5个属性的输入值。我为它写了下面的代码,但它没有运行......

Private Sub PopulateValue()
    Dim x As Integer
    Dim y As Integer
    x = WorksheetFunction.Match(Sheets("New Client Report").Range("E3"), Sheets("Client Report Remarks").Range("A:A"), 0)
    y = WorksheetFunction.Match(ActiveCell.Offset(-1, -1).Address, Sheets("Client Report Remarks").Range("A1:G1"), 0)
    ActiveCell.Offset(-1, 0).Select
    Selection.Copy
    Sheets("Client Report Remarks").Cells(x, y).PasteSpecial xlPasteValues
End Sub

这里我试图识别备注表中与公司(E3)对应的行和列以及具有输入信息的单元属性(ActiveCell.Offset(-1,-1).Address)。活动单元格是具有输入信息的单元格下方的单元格,属性名称位于输入单元格左侧一列中的单元格

这段代码有什么问题?对不起,如果我的代码看起来很荒谬,我对VBA编程完全不熟悉

1 个答案:

答案 0 :(得分:1)

Private Sub PopulateValue()
    Dim x, y 'using Variant to allow for catching errors from Match()
    Dim sht as WorkSheet

    Set sht = Sheets("Client Report Remarks")
    x = Application.Match(Sheets("New Client Report").Range("E3"), sht.Range("A:A"), 0)
    y = Application.Match(ActiveCell.Offset(-1, -1).Address, sht.Range("A1:G1"), 0)
          '?? do you mean ActiveCell.Offset(-1, -1).Value here ??

    If Not IsError(x) And Not IsError(y) Then
        sht.Cells(x,y).Value = ActiveCell.Offset(-1, 0).Value
    Else
        MsgBox "Couldn't locate copy destination!"
    End If    

End Sub