0

私はvbaで以下のコードを持っています。列 a5 から a20 までの sheet5 の行は次のとおりです。

a5=スウェーデン

a6=スペイン

a7=ロシア

a8=イタリア

a9=ドイツ

a10=フィンランド

a11=ノルウェー

a12=スイス

a13=フランス

a14=ベルギー

Set fillcolumnrange = Sheet5.Range("A5:A20")
i = 1
For Each Row In fillcolumnrange.Rows
 If Not Sheet5.Range("A" & i + 4) = "" Then
    MsgBox Row(i)
 End If
 i = i + 1
Next Row

しかし、このコードは代替値のみを要求しています。

スウェーデン

ロシア

ドイツ

ノルウェー

フランス

誰でもコードのバグを見つけるのを手伝ってくれますか

4

3 に答える 3

4

範囲内の行をループし、ループ内で変数を進めていましたi。ループしている各変数を参照できます。

これを試して

Set fillcolumnrange = Sheet1.Range("A5:A20")
For Each cell In fillcolumnrange.Cells
 If Not cell = "" Then
    MsgBox cell
 End If
Next cell
于 2013-01-21T19:33:48.993 に答える
3

さまざまな種類のループが混在しています。

リックの言うことを実行してください。

または使用i

Set fillcolumnrange = Sheet5.Range("A5:A20")
For i = 1 To fillcolumnrange.Rows.Count
    If Not Sheet5.Range("A" & i + 4) = "" Then
       MsgBox Sheet5.Cells(i + 4, 1)
    End If
Next i

または多分do-Loop

Set fillcolumnrange = Sheet5.Range("A5:A20")
i = 1
do until i = fillcolumnrange.Rows.Count + 4
 If Not Sheet5.Range("A" & i + 4) = "" Then
    MsgBox Sheet5.Cells(i + 4, 1)
 End If
 i=i+1
Loop

編集は現在テストされており、正常に動作しているようです)

于 2013-01-21T21:18:22.257 に答える
0

リックの答えに基づいて、For Eachループの短いバージョンを次に示します。

fillcolumnrange.Cells の各セルについて
    If len(cell) <> 0 Then MsgBox セル
次
于 2013-01-22T09:20:06.373 に答える