2016-04-07 52 views
0

我有下面的代碼,但當我嘗試運行宏時出現錯誤。
基於我的宏有一個移動列取決於標準。因此我添加了代碼來獲取列號。見ColRef1
我遇到的問題是當我試圖將這添加到我的IF和公式。問題在於公式的第一部分,也許我寫錯了。 IF(AND(RC&ColRef1&>0,U2>0)VBA中頻和公式與參考RC範圍

Sub Test() 
    Dim GetRow1 As Integer 
    Dim GetRow2 As Integer 
    Dim GetRow3 As Integer 
    Dim GetCol1 As Range 
    Dim GetCol2 As Range 
    Dim ColRef1 As Integer 

    'finds last row on Client Options tab 
    Sheets("Client Options").Select 
    GetRow1 = ActiveSheet.Cells(Rows.Count, "G").End(xlUp).Row 

    'finds last row on Client Response tab 
    Sheets("Client Response").Select 
    GetRow2 = ActiveSheet.Cells(Rows.Count, "E").End(xlUp).Row 

    'finds last row on Recon tab 
    Sheets("Recon").Select 
    GetRow3 = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row 

    'finds Column that contains Client Options since this is a moving column depending on number of brokers on recon 
    Sheets("Recon").Select 
    Set GetCol1 = ActiveSheet.UsedRange.Find("Client Options", , xlValues, xlWhole) 
    ColRef1 = GetCol1.Column 

    Sheets("Recon").Select 
    Range("B2").Value = "=IF(AND(RC&ColRef1&>0,U2>0),""FALSE"",IF(T2>0,(VLOOKUP(A2,'Client Options'!G$2:L$" & GetRow1 & ",6,FALSE)),IF(U2>0,(VLOOKUP(A2,'Client Response'!E$2:G$" & GetRow2 & ",3,FALSE)))))" 


End Sub 

回答

1
  • 你在公式中結合R1C1樣式A1樣式。
  • ColRef1在字符串內,所以它試圖引用RC&ColRef1而不是RC5(例如)。
  • 備註 - 您不需要選擇工作表來使用它。

試試這個代碼(注意 - 地址如U2應該是R2C21)。

Sub Test() 

    Dim GetRow1 As Long 
    Dim GetRow2 As Long 
    Dim GetRow3 As Long 
    Dim GetCol1 As Range 
    Dim ColRef1 As Long 

    'finds last row on Client Options tab 
    GetRow1 = Sheets("Client Options").Cells(Rows.Count, "G").End(xlUp).Row 

    'finds last row on Client Response tab 
    GetRow2 = Sheets("Client Response").Cells(Rows.Count, "E").End(xlUp).Row 

    'finds last row on Recon tab 
    GetRow3 = Sheets("Recon").Cells(Rows.Count, "A").End(xlUp).Row 

    'finds Column that contains Client Options since this is a moving column depending on number of brokers on recon 
    Set GetCol1 = Sheets("Recon").UsedRange.Find("Client Options", , xlValues, xlWhole) 
    If Not GetCol1 Is Nothing Then 
     ColRef1 = GetCol1.Column 

     Sheets("Recon").Range("B2").FormulaR1C1 = "=IF(AND(RC" & ColRef1 & " >0,R2C21>0),FALSE,IF(R2C20>0,(VLOOKUP(R2C1,'Client Options'!R2C7:R" & GetRow1 & "C12,6,FALSE)),IF(R2C21>0,(VLOOKUP(R2C1,'Client Response'!R2C5:R" & GetRow2 & "C7,3,FALSE)))))" 
    End If 

End Sub 
+0

你做了我的一天。這很有魅力。感謝您的幫助和建議。非常感激!!! – Conor