0

私は次の形式のExcelテーブルを持っています:

エクセルファイル

最初の行( "A")の値が1でない列を削除したいだけです。列を削除するには、次のようなものを使用できることを知っています。

Columns("E:E").Select
Selection.Delete Shift:=xlToLeft

どんな助けでもそれは素晴らしいでしょう。

エラーが発生する解決策は次のとおりです。

Sub Delete_Column_Excel_VBA()
    Dim Firstcolumn, fcol As Long
    Dim Lastcolumn As Long

    With ActiveSheet
        .Select
        Firstcolumn = .UsedRange.Cells(1).Column
        Lastcolumn = .UsedRange.Columns(.UsedRange.Columns.Count).Column
        For fcol = Firstcolumn To Lastcolumn
            With .Cells(fcol, "1")
                If .value <> 1 Then .EntireColumn.Delete
            End With
        Next fcol
    End With

最初の行の値が1でない列を削除すると、テーブルは次のように最後を確認する必要があります。

エクセルテーブル2

4

2 に答える 2

1

これを試して

Sub Delete_Column_Excel_VBA()
    Dim cl As Range, rng As Range

    For Each cl In ActiveSheet.UsedRange.Rows(1).Cells
        If cl <> 1 Then
            If rng Is Nothing Then
                Set rng = cl
            Else
                Set rng = Union(rng, cl)
            End If
        End If
    Next
    rng.EntireColumn.Delete
End Sub
于 2012-07-19T11:20:09.650 に答える
0

これでバグは修正されますが、その後も論理エラーが残っていると思います。

With .Cells(fcol, 1)

Excel は、参照が文字列としてではなく、数値として表現されることを想定しています。それからあなたのif私はそれが反対であるべきだと思います。おそらく「1」と比較する必要があります。そうしないと、すべてが削除されるだけです(私のコンピューターで試しました)。

于 2012-07-19T11:05:21.777 に答える