プロが教えるわが家の防犯対策術!

VBAで作業した後の選択範囲についての相談です。

コピーした値の貼り付け後に、範囲が反転した状態であるものを解除したいと
考えています。

任意のセルを選択すれば解除できると思うので、

With wb
.Worksheets(1).Cells(1, 1).Select
End With

こちらのコードを単発で実行すれば問題なく動くのですが、
他のコードと組み合わせて実行すると、実行時エラー438が返ってきます。

コード記載していませんが、wbのSetなどは間違っていません。
原因がわからずです。どなたか詳しい方、教えていただけますか。

質問者からの補足コメント

  • With wb
    .Worksheets(1).Activate
    .Worksheets(1).Cells(1, 1).Select
    End With

    アクティブの一文を入れましたが、Activateの行でエラーのようです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/02/17 08:49
  • コピーでの範囲(点線)ではなく、ドラッグした状態での選択範囲の解除になります。

    No.2の回答に寄せられた補足コメントです。 補足日時:2023/02/17 08:50
  • With wb
    .Activate
    .Worksheets(1).Activate
    .Worksheets(1).Cells(1, 1).Select
    End With

    Activateのところで止まってしまいますね。。。

    コードでは
    With wb の前に、別のワークブックでの作業(コピーペースト)となっています。
    ブックをまたぐ際にエラーとなるようですが…

    No.3の回答に寄せられた補足コメントです。 補足日時:2023/02/17 18:55
  • 使い回しもしていないと思います。
    2つのワークブックを使っていて、

    Dim opwb As Workbook
    Dim addwb As Workbook

    Set opwb = Workbooks("データ.xlsm")
    Set addwb = Workbooks.Add(Template:=ThisWorkbook.Path & "\" & "書式.xlsm")

    で動かしています。

    若干簡略させたコードを載せたいのですが、文字数オーバーのため、難しく…

    No.4の回答に寄せられた補足コメントです。 補足日時:2023/02/17 20:15

A 回答 (5件)

wbがNullとかいうオチはないですよね、、



ブレークポイント打って他の変数とかも中身みてみたら分かりそうな気しますが
    • good
    • 1
この回答へのお礼

何度もご回答いただき、ありがとうございました。
ブレークポイントを打ちながら分析してみたところ、

With wb
.Activate
.Worksheets(1).Activate
.Worksheets(1).Cells(1, 1).Select
End With

Withでwbだけの指定がどうもダメだったようで、
wb.Worksheets(1)まで指定したところ、エラーなく動きました。

お礼日時:2023/02/18 21:47

wb使いまわしてるとかはないですよねー?



これだけでは僕じゃさっぱりわかりません。笑
この回答への補足あり
    • good
    • 0

ブックもアクティベートしてみるとか。


他のコードが見えないので当てずっぽうです。笑
この回答への補足あり
    • good
    • 0

Application.CutCopyMode = False


じゃダメなのん?
この回答への補足あり
    • good
    • 2

別のシートがアクティブになってるとか。

この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A