我对VBA还是很陌生,有人可以帮忙吗?
我有以下代码,我想从不同工作表中的不同子对象调用它,所以我给SHEET_NAME作为该子对象的参数,但是,这不适用于vlookup,至少不是这样。有人可以提出不同的方法来做到这一点吗? 顺便说一句,我不需要单元格中的公式,仅凭价值我就可以了。
Sub ART_R(FROM_CELL, TO_CELL, SHEET_NAME)
Range(FROM_CELL).Select
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-1],SHEET_NAME!C[-12]:C[-11],2,0)),"""",(VLOOKUP(RC[-1],SHEET_NAME!C[-12]:C[-11],2,0)))"
Selection.AutoFill Destination:=Range(FROM_CELL, TO_CELL), Type:=xlFillValues
End Sub
非常感谢!
编辑: 现在看起来像这样:
Sub ART_R(FROM_CELL, TO_CELL, SHEET_NAME)
Range(FROM_CELL).Select
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-1],"&SHEET_NAME&"!C[-12]:C[-11],2,0)),"""",(VLOOKUP(RC[-1],"&SHEET_NAME&"!C[-12]:C[-11],2,0)))"
Selection.AutoFill Destination:=Range(FROM_CELL, TO_CELL), Type:=xlFillValues
End Sub
该呼叫应(理想情况下)如下所示:
Call ART_R("M4", "M19", "RPL OC")
其中“ RPL OC”是图纸的名称-它将始终不同
答案 0 :(得分:0)
Call ART_R(FROM_CELL, TO_CELL, Application.Caller.Worksheet.Name)
以及您的子目录中:
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-1],"&SHEET_NAME&"!C[-12]:C[-11],2,0)),"""",(VLOOKUP(RC[-1],"&SHEET_NAME&"!C[-12]:C[-11],2,0)))"
答案 1 :(得分:0)
这会将公式放在From_Cell
上To_Cell
和Sheet_Name
之间的每个单元格中。
我看到您在代码中使用=IF(ISERROR.....
-这是在Excel 2003及更早版本中执行此操作的方法,2003年之后IFERROR
更好。
2007+版本:
Sub Test()
Art_R "O2", "O23", "RPL OC"
End Sub
Public Sub Art_R(From_Cell As String, To_Cell As String, Sheet_Name As String)
With ActiveWorkbook.Worksheets(Sheet_Name)
.Range(From_Cell & ":" & To_Cell).FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC[-1],'" & Sheet_Name & "'!C[-12]:C[-11],2,0),"""")"
End With
End Sub
2003年版本:
Public Sub Art_R(From_Cell As String, To_Cell As String, Sheet_Name As String)
With ActiveWorkbook.Worksheets(Sheet_Name)
.Range(From_Cell & ":" & To_Cell).FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC[-1],'" & Sheet_Name & "'!C[-12]:C[-11],2,0)),"""",VLOOKUP(RC[-1],'" & Sheet_Name & "'!C[-12]:C[-11],2,0))"
End With
End Sub