0

現在の選択範囲をフォーマットしてコピーするために、Excel でマクロを作成しようとしています。この一環として、すべてのセルをループして、行で条件付きで書式設定を行いたいと考えています (最初の行は少し異なります)。私にとって最も理にかなっているのは「Rows()」ですが、For Each ループで不一致エラーを返します。これを修正する方法はありますか?(また、選択に基づいて変数として行数で動作するはずです。今のところ、1〜4で試しています。)

Sub Convert()
    Dim sOutput As String
    Dim rSelection As Range
    Dim rCell As Range
    Dim rHead As Range

    Set rSelection = Selection.Cells
    Set rHead = rSelection.Rows(1)
    sOutput = "||"

    For Each rCell In rHead
        sOutput = sOutput & rCell.Value & "||"
    Next rCell

    sOutput = sOutput & Chr(10) & "|"

    For Each rCell In rSelection.Rows(2)
        sOutput = sOutput & rCell.Value & "|"
    Next rCell

    'sOutput = sOutput & Chr(10) & "|"

    For Each rCell In rSelection.Rows(3)
        sOutput = sOutput & rCell.Value & "|"
    Next rCell

    'sOutput = sOutput & Chr(10) & "|"

    For Each rCell In rSelection.Rows(4)
        sOutput = sOutput & rCell.Value & "|"
    Next rCell

    fCopy (sOutput)
    MsgBox "Table has been copied and formatted."
End Sub

ありがとう!

4

3 に答える 3

0

選択は、ワークシートのどこかにある任意の長方形の範囲であるとします。その範囲の 3 行目だけである別の範囲を作成します。

Sub TheThirdRow()
    Dim r As Range, rThirdRow As Range
    Set r = Selection
    Set rThirdRow = Intersect(r(3, 1).EntireRow, r)
    rThirdRow.Select
End Sub

rThirdRow などのセルをループできます。

2 行目または 4 行目などについても同様です。

于 2013-10-03T15:37:14.483 に答える
0

可変型を使用し、Rangeすべての IterateRange.Rows プロパティを反復処理します。ここで、IterateRange各行を通過する範囲は何でも構いません。

Private Sub rowTester()
    Dim mRow As Range

    For Each mRow In Range("A1:B4").Rows
        Debug.Print mRow.Row
        'your code here which will execute on each row in the above range
    Next mRow
End Sub
于 2013-10-03T15:31:04.853 に答える
0

に変更rSelection.Rows(2)rSelection.Rows(2).Cellsて、発生したエラーを修正します

于 2013-10-03T15:52:54.110 に答える