![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.1ベストアンサー
- 回答日時:
VBAのイベントで行の削除を検知するものは無かったと思うので、チェンジイベントを使い擬似的に作成してみました。
また、デフォルトで「いいえ」にフォーカスをあてるには多分、ユーザーフォームの作成が必要だと思いますが、面倒なのでメッセージボックスで代用し、デフォルトで削除を取り消されるようにしています。
該当するシートのモジュールに以下の手順で貼り付けてみてください。
1.該当のシートのタブを右クリックし、「コードの表示」を選択。
2.出てきたVisualBasicEditor(白い部分)に下記のコードをコピペ。
'*****ここから下をコピペ*****
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> Target.Rows.Count * 256 Then Exit Sub
MyYn = MsgBox("行が削除されたか、行の全体に変更が行なわれました。" _
& vbCr & "取り消しますか?", vbYesNo + vbQuestion, "")
If MyYn = vbYes Then
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End If
End Sub
'*****ここより上までをコピペ*****
3.AltキーとF11キーを同時に押してワークシートへもどります。
No.2
- 回答日時:
> デフォルトで「いいえ」にフォーカスをあてるにはどのようにすれば
> よいでしょうか。
MsgBox で Buttons のオプションに vbDefaultButton2 とか指定すれば
そのボタン(ここでは2番目)がディフォルトになります。
ご質問のことをやろうと思うと、結構面倒ですね。。クラスモジュール
を使うことになります。ご参考までに。
' ■■■ 以降のコードは VBE で [ThisWorkbookモジュール] です
Private Cmb(1) As New Class1
Private Sub Workbook_Open()
Cmb(0).Bind Application.CommandBars("Worksheet Menu Bar") _
.Controls("編集(&E)") _
.Controls("削除(&D)...")
Cmb(1).Bind Application.CommandBars("Row") _
.Controls("削除(&D)...")
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer
For i = 0 To 1
Set Cmb(i) = Nothing
Next i
End Sub
' ■■■ 以降のコードは VBE で [挿入]-[クラスモジュール] です
' // Class1 モジュール ここから
Private WithEvents mCmb As CommandBarButton
Private Sub Class_Terminate()
Set mCmb = Nothing
End Sub
Public Sub Bind(ByVal Button As CommandBarButton)
Set mCmb = Button
End Sub
Private Sub mCmb_Click( _
ByVal Ctrl As Office.CommandBarButton, _
CancelDefault As Boolean _
)
Dim iRes As Integer
' // 終了条件:: セル以外が選択されている場合は無視
If UCase$(TypeName(Selection)) <> "RANGE" Then Exit Sub
' // 終了条件:: 行全体が選択されていなければ無視
If Selection.Count < Columns.Count Then Exit Sub
iRes = MsgBox(Prompt:="行全体を削除しようとしています。Σ(゜Д゜" _
& vbLf & "実行しますか?", _
Buttons:=vbOKCancel + vbCritical + vbDefaultButton2, _
Title:="確認してみた")
If CLng(iRes) = vbCancel Then
CancelDefault = True
End If
End Sub
この回答へのお礼
お礼日時:2007/05/25 09:28
まちがって削除されるとどうやら困るデータなんですよね。
結構、簡単かと思いましたが思いのほかすごく大変そうですね。。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行すると メッセージボックスが表示されて okをク 4 2023/07/05 19:32
- Excel(エクセル) Excel リンク先のエクセルファイルの削除 同時に行を削除したい 1 2022/11/29 16:20
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- Visual Basic(VBA) Excelのマクロコードについて教えてください 1 2022/03/27 12:02
- 教えて!goo 運営に違反投稿でもない質問を何故か削除されました。 ↓この、私の質問は、違反投稿に該当する対象物では 3 2022/10/13 00:02
- Chrome(クローム) 大学で作ったGoogleアカウントを削除したいです。卒業済です。 削除方法を検索して、別のアカウント 1 2022/06/18 16:33
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/03/01 15:44
- Excel(エクセル) VBA 文字列変換と指定した列にある日時データから時間を削除する方法について 2 2022/04/14 15:23
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/07 08:37
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onenoteでノートブックを削除出...
-
特定のプロジェクトを削除するには
-
EXCEL2007で、挿入したチェック...
-
iPOD shuffle 曲の削除
-
Excelで行挿入イベントをハンド...
-
ODBCの自動登録について
-
xbox360のゲーマータグ(?)の削...
-
Microsoft Outlookを使用してい...
-
アドウェアの対処法で・・・
-
iTunesで買った曲の元からつい...
-
Windows Mailで、アドレス帳の...
-
「K」のみのグレーと「K」を使...
-
空白に四角(□)が表示されない...
-
ワード文書 B5→A4変換
-
bilibiliという動画サイトの動...
-
VBA=一定時間エクセルの入...
-
Word 2010で画面に2ページ並ん...
-
OKボタンが押せない
-
一太郎で封筒の宛名印刷したい...
-
エクセルで右下に簡易計算結果...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onenoteでノートブックを削除出...
-
特定のプロジェクトを削除するには
-
リストボックスでの選択項目分...
-
メルカリに関しての質問です。 ...
-
FOMAカードの電話帳の削除の仕方
-
行を削除する時に警告したい
-
メールソフトBecky2の使い...
-
EXCEL2007で、挿入したチェック...
-
Excelで行挿入イベントをハンド...
-
Windows Mailで、アドレス帳の...
-
windous liveメールの受信箱を...
-
iPhone7でドコモメール設定をし...
-
iPOD shuffle 曲の削除
-
デスクトップのアイコンが削除...
-
メーラーThunderbirdの左に有る...
-
VimとEmacsどちらを学んだらよ...
-
ODBCの自動登録について
-
画像の8個の物の呼び名と設定...
-
USBメモリーのデータ削除方法
-
Excelのチェックボックスの消...
おすすめ情報