2

ワークシートの各行について、セルを参照しようとしています。空のセルに遭遇したら停止します。次に、次の行に移動します。

これを行うために、「IsEmpty」条件で「Dountil」ループを使用しています。この「Dountil」ループは「Foreach」ループ内にあります。「Foreach」ループは、最初の列のある範囲から別の範囲に移動するために使用されます。A1からA2、A3などへ。

私はなんとか最初の行をうまく閲覧することができました。しかし、2列目以降はなんとか下がることができません。「次のrng」ステートメントをExcelに読み取らせずに、「Dountil」ループがマクロを終了すると想定しています...

マクロが終了し、アクティブセルが最初の行の最初の空のセルになります。(停止するのではなく、2行目に移動する必要があります)

これが私のコードです:

Sub label_clusters()

Dim rng As Range, iCounter As Integer
iCounter = 1

For Each rng In Feuil1.Range("A1:A24")

If ActiveCell.Column = 1 Then
Sheets("Feuil2").Cells(iCounter, 1) = rng.Value
Sheets("Feuil2").Cells(iCounter, 2) = rng.Offset(0, 1).Value
iCounter = iCounter + 1
ActiveCell.Offset(0, 2).Select
End If

Do Until IsEmpty(ActiveCell.Value) = True

If ActiveCell.Column <> 1 Then
Sheets("Feuil2").Cells(iCounter, 1) = rng.Value
Sheets("Feuil2").Cells(iCounter, 2) = ActiveCell.Value
iCounter = iCounter + 1
ActiveCell.Offset(0, 1).Select
End If

Loop

Next rng

End Sub

私は明らかに何か間違ったことをしているが、何度も何度もグーグルした後、私は今アイデアが不足している。どんな疑惑もします=)あなたの助けに感謝します。

4

1 に答える 1

1

問題はこの行にあります:

If ActiveCell.Column = 1 Then

最初の行を終了すると、ActiveCellは最初の空のセルであり、ActiveCell.Column> 1です。したがって、最初の行の後のループの反復ごとfor eachに、最初のコードブロックがスキップActiveCellされ、次の行の最初のセルに更新されることはありません。

コードを見ると、どちらのifステートメントも不要なようです。ifと行の両方を削除すると、コードは正しく実行されると思いますend if

于 2013-03-20T04:59:11.817 に答える