2017-02-21 24 views
1

現在、セル内の特定の値に対して特定のワークシートの列を見下すコードがあります。セル内でその値が見つかると、そのセルがサブルーチンの残りの部分のアンカー位置として使用されます。ここに関連コードがあります。Excel VBA - 範囲変数を使用して範囲を動的に設定するセルの集合数

With DailyWS 
    Set DailyTable = .Range("C7:Q21") 
    Set Week = .Range("F4") 
End With 'DailyWS 

Set rngY = BackupWS.Range("B1:B10000").Find(Replace(Week.Value, " Week", ""), lookat:=xlPart) 

If rngY Is Nothing Then 
    Set rngY = BackupWS.Range("B1").Offset(LastRow, 0) 
End If 

With BackupWS 
    Set BackupTable = rngY.Offset(0, 2) 
End With 'BackupWS 

私はDailyTable範囲で情報を取る必要があるとBackupTable範囲にコピーします。現在コード化されているので、rngYは1つのセルしか返さないので、1つのセルしかコピーしません。このサブルーチンの他の部分については、まだrngYが必要です。

DailyTableから始まるrngYのセルをコピーする必要があります。たとえば、rngYがC1として返された場合、BackupTableをC1:Q15の範囲に設定してから、.Offset(LastRow, 0)を実行する必要があります。

これをうまく操作する方法がわかりません。説明が必要な場合は、お尋ねください。あなたの要求から

答えて

2

:Q15は、そのに.Offset(LASTROW、0)を実行します。

rngYがC1として返された場合、その後、私は C1を範囲にBackupTableを設定する必要がありますが。

変更:

If rngY Is Nothing Then 
    Set rngY = BackupWS.Range("B1").Offset(LastRow, 0) 
End If 

With BackupWS 
    Set BackupTable = rngY.Offset(0, 2) 
End With 'BackupWS 

へ:

With BackupWS 
    Set rngY = .Range("B1:B10000").Find(Replace(Week.Value, " Week", ""), lookat:=xlPart) 

    If rngY Is Nothing Then Set rngY = .Range("B1").Offset(LastRow, 0) 

    Set BackupTable = .Range(rngY, .Range("Q15")).Offset(LastRow, 0) 
End With 'BackupWS 

いますが、実際の目標

+0

パーフェクトに詳細を追加することもできます!私はあなたがそれが私が望むように正確に働くためにあなたが行った変更に調整を必要とすることができました。ありがとう! – BetaOp9

+0

あなたは大歓迎です – user3598756

関連する問題