前の質問から、ヘッダー行と最初の列の内容に基づいてダイナミックテーブル内の特定のセルを更新するコードがあります。定数値はコード内の固定値ですが、これを複数のセルを一度に更新できるようにマッピングテーブルに参照できるようにする必要があります。VBAでlistobjectsで定数値としてテーブルを使用する
既存のコードと私が扱う必要があるテーブルの例は以下のとおりです。
sub ChangeTable()
Dim wsMapping As Worksheet
Dim wsData As Worksheet
Dim tbl As ListObject
Dim x As Long
Dim i As Long
Dim hdrCount As Long
Const ACCT_NO = "ABCD1234"
Const HEADING = "Analysis/*"
Const NEW_VAL = "80321"
Set wsData = Worksheets("Test Sheet")
Set wsMapping = Worksheets("Mapping")
Set tbl = wsData.ListObjects("Data")
hdrCount = tbl.HeaderRowRange.Columns.Count
For x = 1 To tbl.ListRows.Count
With tbl.ListRows(x)
If .Range(1, 1).Value2 = ACCT_NO Then
For i = 2 To hdrCount
If (tbl.HeaderRowRange(i).Value2 Like HEADING) Then
If (Not IsEmpty(.Range(1, i).Value)) Then
.Range(1, i).Value = NEW_VAL
End If
End If
Next
End If
End With
Next
End Sub
Excelの別のシートには、アカウント番号と新しい値の列を持つ表があります。変更するアカウント番号は最大10個まで可能ですが、ファイルが作成されるたびに変更される可能性がありますので、コードを使用するたびに可変数の定数を処理できる必要があります。
ABCD1234 80310
ABCD1235 80311
ABCD1236 80312
ABCD1237 80313
ABCD1238 80314
ABCD1239 80315
ABCD1240 80316
は、私は、テーブルの範囲を定義し、言う必要があるだろうと思い、何かのように:
ない場合のisEmpty(細胞(X、1))次に、(定数ACCT_NO =細胞(X、1)ANDのConst NEW_VAL =セル(x、2))
テーブル内の各行をループします。これは効果がありますか?
あなたはそれにスコットが私を打つ、私は、同様のテーブルを片付けた – AlanB