1

1つのワークブック内の複数のワークシートで実行されるマクロに取り組んでおり、シートを切り替えて、データを1つのマスターシートにコピー/貼り付けしています。

私の問題は、Windows(index).Activateを使用して別のシートに切り替えてから、削除する列を選択しようとすると、列が正しく選択されないことです。以下のコードを使用していますが、マスターシートではまったく同じコードで問題なく機能しますが、VBAコードで別のシートに切り替えて使用すると、列1から末尾までのすべての列が選択されます。データ。

以下のコードの背後にある考え方は、列1から始めて、「複合評価」という列を検索することです。次に、列3から複合評価列までのすべての列を削除します。

誰かが私が間違っていることを教えてもらえますか?助けてくれてありがとう!

For counter = 1 To 40 Step 1
        Cells("1", counter).Select
        strval = ActiveCell.Value
    If strval = "Composite Rating" And counter <> 3 Then
        Range(Cells(1, 3), Cells(1, counter - 1)).EntireColumn.Select
        Selection.Delete Shift:=xlLeft
        Exit For
    End If
    Next counter

編集:申し訳ありませんが、私の設定について言及する必要があります。Windows7でExcel2007を使用しています。xlsファイルとxlsxファイルの両方を試しましたが、同じ結果になりました。

4

2 に答える 2

2

以下のコードを試してください:

 Dim rng As Range
    Set rng = Range("A1:Z1").Find("Composite Rating")

    If Not rng Is Nothing Then
        If rng.Column > 3 Then
            Range("C1", rng).EntireColumn.Delete
        End If
    End If
于 2013-03-10T06:49:22.977 に答える
0

コレクション内のindexプロパティは、Windows他のウィンドウを選択すると変更されます->相対的です!

Workbooks代わりにコレクションを使用してください。

于 2013-03-10T05:21:53.910 に答える