Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


400 / 13645 ツリー ←次へ | 前へ→

【80580】ブックモジュール global オブジェクト エラーについて みも 19/3/14(木) 18:25 質問[未読]
【80581】Re:ブックモジュール global オブジェクト... よろずや 19/3/14(木) 19:54 回答[未読]
【80587】Re:ブックモジュール global オブジェクト... みも 19/3/15(金) 18:09 お礼[未読]
【80582】Re:ブックモジュール global オブジェクト... マナ 19/3/14(木) 19:59 発言[未読]
【80588】Re:ブックモジュール global オブジェクト... みも 19/3/15(金) 18:10 お礼[未読]
【80583】Re:ブックモジュール global オブジェクト... γ 19/3/14(木) 21:21 発言[未読]
【80589】Re:ブックモジュール global オブジェクト... みも 19/3/15(金) 18:17 お礼[未読]

【80580】ブックモジュール global オブジェクト ...
質問  みも  - 19/3/14(木) 18:25 -

引用なし
パスワード
   マクロVBAについて質問です。

最近マクロを始めたものです。

やりたい内容: ブックが開いた時に前回入力されているデータを自動削除したい。

最初はブックモジュールに下記コードを記載していたのですが、“Rowsメソッドは失敗しました_Global オブジェクト” となり実行で来ません。

浅はかですが書く場所が悪いのかと思い、標準モジュールを呼び出すコードをブックモジュールに記載したのですがエラーは出続けて解消できません。

標準モジュールでステップインで実行すると問題なく進みます。

また、コマンドボタンを設置して標準モジュールを実行してもうまくいきます。

This workbookに繋げて書こうとするとなぜかうまくいきません。

初心者で大変申し訳ありませんが、行き詰まっています。

どなたかご教授頂けますと幸いです。

*ブックモジュール

Private Sub Workbook_Open()

Call Module1.Module1

End Sub

*標準モジュール

Sub Module1()

'KシートをKMとする

    Dim KM As Worksheet

    Set KM = Workbooks("A").Worksheets("K")

' KシートA列の最終行をKMMRとする

    Dim KMMR As Long

    KMMR = KM.Cells(Rows.Count, 1).End(xlUp).Row   (ここでエラーになります。)

    If KMMR > 1 Then

    KM.Range(KM.Cells(2, 1), KM.Cells(KMMR, 39)).Delete

    Else

    End If

'HシートをHMとする

    Dim HM As Worksheet

    Set HM = Workbooks("A").Worksheets("H")

' HシートA列の最終行をKMMRとする

    Dim HMMR As Long

    HMMR = HM.Cells(Rows.Count, 1).End(xlUp).Row

    If HMMR > 1 Then

    HM.Range(HM.Cells(2, 1), HM.Cells(HMMR, 30)).Delete

    Else

    End If

End Sub

【80581】Re:ブックモジュール global オブジェク...
回答  よろずや  - 19/3/14(木) 19:54 -

引用なし
パスワード
   >書く場所が悪いのか
場所ではなく、実行するタイミングの問題です。

Workbook_Open()直後には、まだワークシートが開かれていないようです。
Workbook_WindowActivateイベントで実行させるのが吉。

Workbook_Open()直後にのみ実行させたい場合は、
Workbook_WindowActivateイベントで実行済みフラグを立てるなどの工夫が必要です。

と、思う。
うまくいったら、他の人のために結果報告してね。

【80582】Re:ブックモジュール global オブジェク...
発言  マナ  - 19/3/14(木) 19:59 -

引用なし
パスワード
   ▼みも さん:


KM.Rows.Count

だとどうなるでしょうか?

【80583】Re:ブックモジュール global オブジェク...
発言  γ  - 19/3/14(木) 21:21 -

引用なし
パスワード
   > Set KM = Workbooks("A").Worksheets("K")
のWorkbooks("A")というのはこれでいいのですか?

Bookを指定しなくてもActiveWorkbookと解釈されるはずなので記載しなくてよいし、
明示的に書くなら、
・Thisworkbookもしくは、
・Workbooks("A.xlsm")
とかじゃないんですか?

こちらにはVBEのコードペインからコピーペイストして
投稿されているのでしょうか?
いやほんとうは、これとは別のコードで実行しています、
というのは無しでお願いしたい。

ちなみに、
Set KM = Sheet1
などとしてテスト実行しましたが、特にエラーは発生しませんね。

【80587】Re:ブックモジュール global オブジェク...
お礼  みも  - 19/3/15(金) 18:09 -

引用なし
パスワード
   ▼よろずや さん:
>>書く場所が悪いのか
>Workbook_WindowActivateイベントで実行させるのが吉。

ご回答ありがとうございます。
テストできる環境におらず、ご報告が遅れましてすみません。

Activateで実行したところ上手くいきました。
わかりづらい説明にもかかわらず迅速にアドバイス頂きありがとうごさいました。

【80588】Re:ブックモジュール global オブジェク...
お礼  みも  - 19/3/15(金) 18:10 -

引用なし
パスワード
   ▼マナ さん:

>
>
>KM.Rows.Count
>
>だとどうなるでしょうか?

ご回答ありがとうごさいます。
実は、別の問題であったようで解決いたしました。

迅速にアドバイス頂きありがとうごさいました。

【80589】Re:ブックモジュール global オブジェク...
お礼  みも  - 19/3/15(金) 18:17 -

引用なし
パスワード
   ▼γ さん:
>> Set KM = Workbooks("A").Worksheets("K")
>のWorkbooks("A")というのはこれでいいのですか?
>
>Bookを指定しなくてもActiveWorkbookと解釈されるはずなので記載しなくてよいし、
>明示的に書くなら、
>・Thisworkbookもしくは、
>・Workbooks("A.xlsm")

はじめにエラーが出た際、ブックも指定しないと認識してもらえないかと思い
上記の形でコードを書きました。
本来は仰っておられる形で書くべきかもしれません。
初歩的なところで申し訳ありません。


>
>こちらにはVBEのコードペインからコピーペイストして
>投稿されているのでしょうか?
>いやほんとうは、これとは別のコードで実行しています、
>というのは無しでお願いしたい。

コピーペーストしております。
ただ、シート名ファイル名は実際にはアルファベット1文字ではありません。すみません。
KM,HM や、最終行に関しては本当にこれを使用しております。


>ちなみに、
>Set KM = Sheet1
>などとしてテスト実行しましたが、特にエラーは発生しませんね。

そのような書き方もできるのですね。
アドバイスありがとうごさいます。

エラーは実は解決させて頂きましたので今後教えて頂いた
書き方も活用させて頂きます。

お忙しいところ、ありがとうございました。

400 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free