VBAコーディングで変数を配置する場所はどこですか?VBAコーディングで変数を配置する場所
範囲を選択するには、一般に他のコードを使用します。
しかし、私は次のコードを試してみました。
は、以下の2つのコードのブロック、ワーク・ないもの(Sub sbRangeUsingLoop_01()
)及び(Sub sbRangeUsingLoop_02()
)を動作するもの
Sub sbRangeUsingLoop_01()
' THIS CODE WAS MEANT TO SELECT RANGE B2(startCell):D2(lastCell)
' -INSTEAD, JUST CELL B2 IS SELECTED
Dim colNo As Integer
colNo = 2
Dim startCell As Range
Set startCell = Cells(2, 2) 'CELL B2
Dim lastCell As Range
Set lastCell = Cells(2, colNo) 'lastCell REFERS TO CELL B2 THROUGHOUT
' WHEN I HOVER CURSOR OVER IT IN STEP THROUGH DEBUG!
' ...YET colNo GETS INCREMENTED WHEN I HOVER CURSOR OVER
' IT IN STEP THROUGH DEBUG !
Do Until Cells(2, colNo).Value = ""
colNo = colNo + 1
Loop
colNo = colNo - 1 'MOVE 1 COL TO LEFT TO LAST NON-BLANK CELL.
Range(startCell, lastCell).Select 'lastCell REFERS TO CELL B2!!
End Sub
次のコードの動作をしています。あなたは、コードを動作させるためにオブジェクト変数 'lastCell'の宣言と代入を再配置しなければならないことに気づくでしょう。通常の練習がある -
Sub sbRangeUsingLoop_02()
' SELECTS RANGE B2:D2 AS IT IS MEANT TO.
Dim colNo As Integer
colNo = 2
Dim startCell As Range
Set startCell = Cells(2, 2) 'CELL B2
Do Until Cells(2, colNo).Value = ""
colNo = colNo + 1
Loop
colNo = colNo - 1 'MOVE 1 COL TO LEFT TO LAST NON-BLANK CELL D2.
Dim lastCell As Range
Set lastCell = Cells(2, colNo)
Range(startCell, lastCell).Select 'lastCell REFERS TO CELL D2
End Sub
私の質問は、オブジェクト変数の宣言と割り当ては、コードの先頭に配置されたときに、なぜSub sbRangeUsingLoop_01()
が動作しないのですか?
の宣言とアサインメントをSub sbRangeUsingLoop_02()
のコードの最後に配置する必要があるのはなぜですか?
質問を慎重に書式設定すると、良い回答が得られるようになります。 –
私はあなたの上記のコメントを取って、StackExchangeを初めて使っています。どうすれば慎重に質問をフォーマットすることができますか? – ComfortablyNumb