1

範囲の下に新しい行を挿入し、その新しい行への参照を取得して入力できるようにするにはどうすればよいですか?

Dim newRow As Range
newRow = row.Offset(1).EntireRow.Insert

オブジェクト変数または幅ブロック変数が設定されていないというエラーが発生しますが、新しい行が挿入されます。しかし、私はそれへの参照を得ることができないようです。

2 番目の質問は、上記で範囲を反復処理し、その範囲に行を挿入できるかということです。挿入は反復に影響しますか?

4

3 に答える 3

1

あなたがしようとしていることを誤解していたので、私の前の発言は間違っていました。以下は、範囲をループする例です。条件を満たすと、ループ内の現在の行の下に行が挿入されます。挿入された行をスキップするにはブール値が必要です。

Sub InsertAfterLastRow()
    Dim Rng As Range
    Set Rng = Range("A1:B5") 'Arbritrary
    Dim LastRow As Long
    Dim InsertRow As Long
    Dim Inserted As Boolean
    Dim NewRow As Range

    Inserted = False

    For Each Row In Rng.Rows
        If Inserted = False Then
            If Row.Cells(1, 1).Value = "Yes" Then
                    Rows(Row.Row + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                    Set NewRow = Range(Row.Row + 1 & ":" & Row.Row + 1)
                    NewRow.Cells(1, 1).Value = "Inserted"
                    Inserted = True
            Else
                Row.Cells(1, 1).Value = "No"
            End If
        Else
            'Avoid a double insert, skipping a row
            Inserted = False
        End If
    Next
End Sub
于 2013-10-09T06:53:24.293 に答える
0

ああ、神様。ばかげた VBA 構文。;)

Set newRow = Rows(rowNumber + 1 & ":" & rowNumber + 1)

動作します。重要な部分は Set キーワードです。

于 2013-10-09T09:28:33.173 に答える
0

名前付き範囲に影響を与えずに、参照範囲 (名前付き範囲) の下のポイントで可変数の行を追加または削除したいという同様の問題と戦ってきました。最初に、行数 = addR を保持する変数を追加 (または削除) する行数を決定します。

addR = 2 ' you'd use some logic to derive the value of addR Rows(Range("OutputBlock").Row + 1).EntireRow.Resize(addR).insert 出力ブロックは、行を追加する名前付き範囲です。

于 2016-05-06T01:14:26.937 に答える