1

現在のワークブックのすべてのワークシートにフォーマットを適用しようとしています。「For Each」を試し、最後のワークシートに到達するまでループしようとしましたが、さまざまな理由で両方のエラーが発生しました。誰かが私が間違っていることを教えてもらえますか?

方法 1: 最初のワークシートでは機能しますが、残りのワークシートでは機能しません。

Sub format_worksheets()

    Dim ws As Worksheet
    For Each ws In Worksheets

        Columns("A:A").Select

           Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
                Semicolon:=False, Comma:=True, Space:=False,     
                Other:=True,TrailingMinusNumbers:=True

        Range("A1").Select

    Next ws


End Sub

方法 2: 最後のワークシートを認識しない。

Sub format_worksheets()

    Dim ws As Worksheet

    ws = Worksheet.Active

    Do

        code

    Loop Until ws = Sheets(Sheets.Count).Active

End Sub
4

2 に答える 2

4

方法 1 では、次のように変更してみてください。

Columns("A:A").Select 

ws.Activate
ws.Columns("A:A").Select 

... ワークシートをアクティブにして、作業するワークシートを指定します。

于 2012-09-11T15:55:17.730 に答える
1

私はあなたが方法2で何をしようとしているのかを理解しようとしていましたが、できませんでした。しかし、それだけで、それぞれに使用されない作業バージョンがあります。

Sub format_worksheets()
    dim x as Integer
    For x = 1 To Sheets.Count
        Sheets(x).Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
                    Semicolon:=False, Comma:=True, Space:=False, Other:=True, TrailingMinusNumbers:=True
    Next x
End Sub

列Aにデータがないシートがある場合、これはエラーになることに注意してください。また、selectステートメントは、不要な場合は避けるのがベストプラクティスであるため、省略しました。

于 2012-09-11T17:06:39.750 に答える