整数VBAを再定義します
-
20-12-2019 - |
質問
私は以下の問題を修正するのが難しい:
このコードを持っていると言う
i_GroupNumberA = Application.WorksheetFunction.CountIf(Sheets("SheetX").Range("G2:G500"), "Red")
i_GroupNumberB = Application.WorksheetFunction.CountIf(Sheets("SheetX").Range("G2:G500"), "Green")
For i = 2 To LastRow
For j = 2 To LastCol
groupNumber = Sheets("Sheet1").Cells(i, j).Value
i_GroupNumberA = 35 'this number a integer that I have got from a cells.value
i_GroupNumberB = 39
If groupNumber = Sheets("Sheet1").Cells(i, j).Value Then
i_Variable = "i_" + groupNumber + "AlphabeticLetter"
MsgBox i_Variable
End If
Next j
Next i
.
結果として、 i_variable を結果としてメッセージボックスの文字列として取得します。
i_groupNumbera
次の結果をお持ちです。
35
尋ねているのは、整数として機能する文字列の新しい変数を取得する方法です。
私はこれを尋ねているかどうかわからない?
私は@ Engineersmnkyを言ったが、効果はありませんでした。私はサイトをチェックし、あなたのコードと一緒にいくつかの調整をしました。それでも私は見返りに必要な数を取得することはできません。これまではこれを手に入れました:
Dim Group As New Collection
i_GroupNumberA = Application.WorksheetFunction.CountIf(Sheets("SheetX").Range("G2:G500"), "Red") 'lets assume it is an number 35
i_GroupNumberB = Application.WorksheetFunction.CountIf(Sheets("SheetX").Range("G2:G500"), "Green") 'lets assume it is an number 39
Group.Add i_GroupNumberA
Group.Add i_GroupNumberB
For i = 2 To LastRow
For j = 2 To LastCol
groupNumber = Sheets("Sheet1").Cells(i, j).Value
i_Variable = "i_" + groupNumber + "AlphabeticLetter"
Group(i_Variable)
Next j
Next i
.
グループ(i_variable)私はそれを理解することができない?何らかの理由でそれが機能していません。
解決
vba
の文字列から変数値を取得できないため、Collection
オブジェクトまたはDictionary
を作成することをお勧めします。
dim groups AS New Collection
'Value, Key
groups.Add 35, "i_GroupNumberA"
groups.Add 39, "i_GroupNumberB"
.
その後、
を使用できるメッセージボックスではなく、ループ内でgroups(i_Variable)
.
これは "i_groupNumbera"
の場合35を返します。 更新コレクションCollection(Key)
の項目とキー構造を使用して、必要な値を返す必要がある値を指定する必要があります。
これらのグループ番号は、これらがわからないので、必要なグループ番号を使って動的にコレクションを構築する必要があります。
Function buildCollection(val As Variant,alpha AS String) AS Collection
Dim groups As New Collection
For i = 2 To LastRow
For j = 2 To LastCol
groupNumber = Sheets("Sheet1").Cells(i, j).Value
i_Variable = "i_" & CStr(groupNumber) & alpha
groups.Add val, i_Variable
Next j
Next i
set buildCollection = groups
End
.
しかしあなたの構造についてもっと情報がありません私は基本的な例を超えて本当に助けることができません。グループ番号は何ですか?それは実際の整数ですか? VS Bとは何ですか?これはもともと考えられているよりも簡単かもしれませんので助言してください。サンプルデータや何かを置くと、私がこの働くことができると確信しているのであれば、あなたはかなり単純なループのようです。あなたはすべての細胞をループしていて、彼らが私に混乱するように見えるすべてのグループ番号であると述べています。