![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
いつもこのサイトではお世話になっております。
エクセルVBAで、他のエクセルブックからデータを取り込んでいます。
取り込んだ後は、用途に従い加工しています。
ここで些細な問題です。通常、
1.他のエクセルブックを開く(場合によってはアクティブシートの変更もあり)
2.コピーし、元ブックをアクティブして、貼り付け
3.1で開いたエクセルブックをアクティブして、閉じる
エクセルVBAは、この場合、何の問いかけもなく動きます。
ところが、2のコピペ操作の時に、フィルタで一部のデータのみ選択された状態ですと、非表示のデータは、コピペされません。
ゆえ、1と2の操作の前に、オートフィルタ手続きを2回入れました。すると、非表示のデータもコピーされました。(うまくいきました) ただ、3の閉じるの手続きの際は、「保存しますか」と聞いてきます。オートフィルタを二回しているので、開く前の状態から変化しているので確認メッセージは当然出ます。勿論、「保存しない」を選択すれば、全く問題ないのですが、できれば、この問いかけをなくし、常に「保存しないで終了」にしたいです。
以下のコードはマクロの自動記録で出したものですが、こちらのコードに何か加筆することで、可能になるのでしょうか。
Sub Macro1()
Range("H5").Select
Workbooks.Open Filename:="C:\Users\meka\Desktop\Book1.xlsx"
Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter
Selection.Copy
Windows("Book1").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Book1.xlsx").Activate
ActiveWindow.Close
End Sub
本当に使っているマクロは、ブック名やシート名などもセルに用意してあり、そこから参照するものでこのコードと全く同じではありません。が、考え方は同じです。
ちょっとでもわかる方、可能であれば教えて下さい。
ちなみに、コピペを使わずに、セルからセルへ値を代入する方法ならば、オートフィルタに関係なく、飛ばさずに値を取り込むことは分かります。
今回は、VBAで、「開いたエクセルブックが、少し状態が変わったが、問いかけのない形で保存せずに終了」ができるかに的を絞り知りたいです。
宜しくお願いします。
No.4
- 回答日時:
No.3です。
まったく関係ない回答をしていました。
無視してください。
No.1さんがズバリの回答をされていますので、
そちらを参考にしてください。
どうも失礼しました。m(_ _)m
No.3
- 回答日時:
こんばんは!
お望みの動きになるかどうか判りませんが・・・
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With ThisWorkbook.Worksheets("Sheet1")
If WorksheetFunction.CountA(.Range("BC12:BC24")) > 0 Then
If MsgBox("時刻が未入力です。" & vbCrLf & "セルを選択しますか?", vbYesNo) = vbYes Then
.Range("BC1").Select '//←とりあえずBC1セルを時間入力セルとしている★//
Cancel = True
Else
Application.DisplayAlerts = False
ThisWorkbook.Close savechanges:=False
Application.DisplayAlerts = True
End If
End If
End With
End Sub
※ メッセージボックスの「はい」を選択するとBC1セルを選択するようにしていますが、
実際の時刻入力セル番地に変更してみてください。m(_ _)m
コメントありがとうございます。
このマクロはバックグラウンドジョブですか?
自身、「マクロの自動記録」から生成されたマクロを、Rangeをcellsに変えたり、Do、For、If 等の命令を加筆して使っています。
また、「マクロの表示」から「編集」選択し、マクロ名を指定して使うこともあります。
このマクロを「マクロの表示」から「編集」して、入力してみましたが、どうやって実行するのか分かりませんでした。
自身が知りたかったのは、「エクセルブックを開く」→「閉じる」。その間に「オートフィルタ」を2回処理すると
「保存しますか?」のメッセージが出てくるので、出てこないようにしたかったのです。
「時刻の問い合わせ」も入ってますが、ご提示いただいたマクロはどんな動きをするのか、興味深い内容ですので、教えて頂けると有難いです。
No.2
- 回答日時:
こんにちは
他の方法の一例です。
>問いかけのない形で~~
そのままですが、警告表示たを出さなくする方法です。
DisplayAlerts を False に設定することでも実現できると思います。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルVBAコピー 2 2022/06/08 21:45
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 12:00
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのセル内でタブキーの...
-
エクセル 文字の先頭4文字だ...
-
差し込み印刷で文字化け!
-
エクセルで3Dの円錐形を作成...
-
リンクデータが更新できない ...
-
エクセルオンラインのみ勝手に...
-
エクセルのグラフでデータテー...
-
エクセル データ追加するもグ...
-
エクセルにアクセスカウンター...
-
文字を入力するだけで、強制終...
-
一般家庭でのエクセル利用法
-
ウェブから貼ったドロップダウ...
-
エクセルのグラフの作り方
-
エクセルVBA 長さ0の文字列をNu...
-
VBA初心者です。電話番号の数字...
-
第何週かが表示できるカレンダ...
-
【エクセル】原点を通るグラフ...
-
COUNT COUNTIF
-
一太郎からエクセルに
-
Excelでのファンクションキーの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのセル内でタブキーの...
-
エクセルで3Dの円錐形を作成...
-
エクセルのグラフでデータテー...
-
エクセル 文字の先頭4文字だ...
-
エクセルで全波整流回路の波形
-
日報のデータを月報にデータを...
-
エクセルマクロでセルの文字サ...
-
VBA初心者です。電話番号の数字...
-
文字をアルファベット順に3つ...
-
エクセルVBA 長さ0の文字列をNu...
-
エクセルオンラインのみ勝手に...
-
エクセルで関数グラフを描きた...
-
エクセルの変換
-
ウェブから貼ったドロップダウ...
-
エクセルのデータを自動的にweb...
-
エクセルVBAで、他のエクセルブ...
-
エクセル データ追加するもグ...
-
エクセルにアクセスカウンター...
-
第何週かが表示できるカレンダ...
-
VBでリアルタイムにグラフを...
おすすめ情報