0

次のコードを使用して、特定の「NAME」列の行が4文字未満の場合に、行全体を削除しようとしています。(つまり、行1のヘッダーがNAMEである列)データベースには現在約10,000行があります。現在コードが近いことはわかっていますが、実行しようとするとVBエラーが発生します。名前で特定の列を間違って検索している可能性があると思います。

Sub Macro2()

' Macro to delete rows if there are less than 4 in the NAME column

    Dim LR As Long, i As Long
    Application.ScreenUpdating = False
    LR = Range("NAME" & Rows.Count).End(xlUp).Row
    For i = LR To 1 Step -1
        If Len(Range("NAME" & i).Value) < 4 Then Rows(i).Delete
    Next i
    Application.ScreenUpdating = True

End Sub

編集:次の行でVBAエラーが発生しています:

LR = Range("NAME" & Rows.Count).End(xlUp).Row
4

2 に答える 2

6

他の人が上記のコメントでほのめかしているように、あなたの声明

LR = Range("NAME" & Rows.Count).End(xlUp).Row

そしてまた、

Len(Range("NAME" & i).Value) 

与えられたプログラムのVBAは、言うのと同じであるため、意味がありません。

Range(Name81).Value '81 is a random number

また、ブックにName81(またはその他の番号)という定義済みの名前がない限り、そのコードは実行時エラーを生成します。

私はこれがあなたが望むようになると思います:

Sub Macro2()

' Macro to delete rows if there are less than 4 in the NAME column

    Dim LR As Long, i As Long, lngCol as Long

    lngCol = Rows(1).Find("NAME",lookat:=xlWhole).Column 'assumes there will always be a column with "NAME" in row 1

    Application.ScreenUpdating = False


    LR = Cells(Rows.Count, lngCol).End(xlUp).Row

    For i = LR To 1 Step -1

        If Len(Cells(i, lngCol).Value) < 4 Then Rows(i).Delete

    Next i

    Application.ScreenUpdating = True

End Sub
于 2012-06-27T15:08:54.973 に答える
0

以下の答えについて。行の削除が特定の行以下にのみ適用されるようにコードを編集するにはどうすればよいですか?IE。これが4行目から下に実行する必要がある場合。

サブMacro2()

'NAME列の行が4未満の場合に行を削除するマクロ

Dim LR As Long, i As Long, lngCol as Long

lngCol = Rows(1).Find("NAME",lookat:=xlWhole).Column 'assumes there will always be a column with "NAME" in row 1

Application.ScreenUpdating = False


LR = Cells(Rows.Count, lngCol).End(xlUp).Row

For i = LR To 1 Step -1

    If Len(Cells(i, lngCol).Value) < 4 Then Rows(i).Delete

Next i

Application.ScreenUpdating = True

サブ終了

于 2021-09-10T20:51:08.180 に答える