複数の行、列からなるセル範囲に値設定しているとします。このセル範囲に対し、行もしくは、列単位でセルの結合を行うと、"選択範囲には複数のデータ値があります。1つのセルとして結合すると、選択したセル範囲にある最も左上端にあるデータのみが保持されます。・・・・”と表示され、”OK”、”キャンセル”ボタンが表示されます。この”OK”、”キャンセル”ボタンのトラップって出来ますか?(関数の戻り値のように)
別の言い方をすると、複数行、列に対して結合を行うと、一度”OK”ボタンを押しても、次の行列で結合を行おうとすると再びメッセージが表示されます。一度、”OK”を押すと次からメッセージが表示されない(トラップできれば、DisplayAlerts = Falseとできるのですが?)ように出来ますか?キャンセルが押された場合、エラー"実行時エラー1004"が発生しますが、明確にキャンセルボタンが押されたと判断する方法ってありますか?
どなたか、詳しい方教えて頂けないでしょうか?宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
>VBA以外の力を借りると出来るのでしょうか?
そのあたりは不勉強なので、ハッキリ自信を持ってお答えできないのと、
APIなどを利用すれば出来るのかなぁ?
程度の期待もあって、
出来ないような気がすると書きました。
詳しい方の回答を待ちましょう。
>同じモジュールでエラーNo1004が発生した場合に、ダイアログでキャンセルが押されたのか?
>もしくは、それ以外の1004エラーなのかを識別する方法っあるのでしょうか?
Err.Descriptionを調べてみては?
例えば
Sub Test()
On Error GoTo ErrorHandler
ActiveSheet.Protect
Range("A1:B4").MergeCells = True
Cells(1, 1).Value = 1
Exit Sub
ErrorHandler: MsgBox Err.Number & ":" & Err.Description
Resume Next
End Sub
上記のコードは2つのエラーが発生します。
どちらもErr.Numberは1004ですが、
Err.Descriptionは違っているので、
これで識別するっていうのはダメでしょうか?
でも、コーディングする時に、ある程度
エラーの原因を予測しながら行うと思うので、
それで判断できると思います。
質問のように、ダイアログをキャンセルしたことによって発生するなら、
「Range クラスの MergeCells プロパティを設定できません。」
しかありえないと思いますが・・・。
No.3
- 回答日時:
こんにちは。
Wendy02です。前から、ここの掲示は見ていて、ずっと気にはしていたのですが、レスつけるのか迷いがありました。
いつも、同じパターンの回答ですみませんが、私としては、究極的には、これは、その必要性があるのかどうか、というところに掛かってくるのではないか、と思いました。逆にいうと、私は、MergeCells で、Application側のエラーダイアログを待つというようなマクロは、作らないと思います。自分でエラーダイアログを作るか、エラー出さないようにしてコーディングします。
以前、同じようなご質問で解決済みにはなっていても、実際はご満足しておられなかったようですね。
今回の話は、ExcelのApplication内部に割り込んで、それを取得することですから、私などは、到底及ばないような遥か彼方のレベルの話のようです。だから、私などはお呼びではないのですが、エラーで出されるダイアログの戻り値は、プログラマー側で作らない限りは、Application側に取られてしまうと思いますから、キーを監視する以外は、私には取れるとは思えません。いつものように、レスがつけば、Win32 APIの"GetKeyboardState"あたりで解決することになるのかもしれませんが、私は、Excelの全体の設計から、そのようなコーディング・スタイルは疑問ですので、なんとも言えません。私の場合、テクニックを追いかけていくと、ある一定の時間や期間内に、完成できなくなってしまうから、あまり振り回されないようにしています。
外部的には、キャンセルキーを"EnableCancelKey" でトラップするようなことは、既にご存知かと思います。わたし的には、Application.DisplayAlerts をFalse にして処理すれば、問題は解決するように思うのですが……。
全体が、どのようなコーディングの内容になっているかにもよります。
No.1
- 回答日時:
こんにちは。
>明確にキャンセルボタンが押されたと判断する方法ってありますか?
エクセルの警告ダイアログの「OK」を押したか、
「キャンセル」を押したかを直接捕まえることは
VBAだけでは、で出来ないような気がします。
が、質問の場合、セルの結合をキャンセルすることで、
発生するエラーをトラップすれば良いように思います。
>一度、”OK”を押すと次からメッセージが表示されないように出来ますか?
モジュールレベルの変数を用意して
最初の「OK」でこの変数に「True」
をセットする。
セットした値をApplication.DisplayAlertsの
設定値に利用するのはどうかな?
Dim flg As Boolean
Sub test()
On Error GoTo ErrorHandler
Application.DisplayAlerts = Not flg
Selection.MergeCells = True
flg = True
Exit Sub
ErrorHandler: MsgBox "キャンセルされました。"
End Sub
多分、こんな感じで良いと思いますが、
変数flgの値がリセットされることも有り得るので、
変数の代わりにTrue/Falseを
ワークシートなどに書き込む方が
確実かもしれません。
早速のご指導有難う御座います。
VBA以外の力を借りると出来るのでしょうか?
もしくは、同じモジュールでエラーNo1004が発生した場合に、ダイアログでキャンセルが押されたのか?もしくは、それ以外の1004エラーなのかを識別する方法ってあるのでしょうか?
それとも、こまめに、エラーとラップのオンオフを行い、その範囲内で生じる1004エラーは、ダイアログのキャンセルしか発生しないとみなすしか方法がないのでしょうか?
重ね重ねご指導のほど宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) [オートフィルター]機能について 3 2023/02/04 14:32
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Visual Basic(VBA) シート間で同じ値があったら指定範囲をコピーして貼り付け 1 2022/11/07 08:01
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/15 08:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
友人と2人で行くはずの旅行を...
-
タイミーで応募キャンセルされ...
-
「参考になった」キャンセル方法
-
チェックディスクにどのくらい...
-
付き合う前にA男とご飯行く約...
-
友人(4人)との旅行当日体調不...
-
裏DVD
-
当日キャンセルしてしまった美...
-
ドタキャンの知人に飲み会のキ...
-
お葬式で旅行がキャンセルに
-
昨日買った家具のキャンセルに...
-
タイミーを使って仕事の応募し...
-
2回連続ママ友にドタキャンされ...
-
どう考えてもおかしいのですが...
-
旅行のキャンセル料について相...
-
オーダーメイド品のクーリング...
-
美容室でのネット予約を2日くら...
-
クラシルのサブスクをキャンセ...
-
女友達が向こうから誘ってきた...
-
飲食店で注文後にキャンセルは
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「参考になった」キャンセル方法
-
友人と2人で行くはずの旅行を...
-
友人(4人)との旅行当日体調不...
-
タイミーで応募キャンセルされ...
-
通販でキャンセルした商品が届...
-
当日キャンセル料の請求について
-
お葬式で旅行がキャンセルに
-
裏DVD
-
2回連続ママ友にドタキャンされ...
-
急に旅行に行けないかもしれな...
-
当日キャンセルした飲み会のキ...
-
confirm の OK、キャンセル ...
-
当日キャンセルしてしまった美...
-
至急!詐欺の可能性がある裏DVD...
-
美容室でのネット予約を2日くら...
-
ドタキャンの知人に飲み会のキ...
-
ジャンカラで支払いせず出てき...
-
旅行のキャンセル料について相...
-
飲み会を当日キャンセルしたん...
-
社員旅行、体調不良でドタキャ...
おすすめ情報