2016-04-07 16 views
0

以下のコードがありますが、マクロを実行しようとするとエラーが発生します。
私のマクロに基づいて、基準に応じて移動する列があります。したがって、列番号を取得するコードを追加しました。 ColRef1を参照してください。
問題は私がIFと数式にこれを追加しようとするときです。問題は数式の最初の部分であり、おそらく私はそれを間違って書いています。 IF(AND(RC&ColRef1&>0,U2>0)参照するRC範囲のVBA IFと数式

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
  • あなたの数式でA1スタイルとR1C1スタイルを組み合わせています。
  • ColRef1が文字列内にあるため、RC5(たとえば)ではなくRC&ColRef1を参照しようとしています。
  • サイドノート - シートを選択する必要はありません。

このコードを試してください(注: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

関連する問題