
いろいろ調べながらエクセルのVBAを組んだのですが、どこに問題があるのかわかりません。よろしくお願いします。
セルA5を選択した場合ユーザーフォーム2を、セルO3を選択した場合ユーザーフォーム1を呼び出すためのVBAですが、どちらもユーザーフォームが呼び出されません。
どこが原因か教えていただけないでしょうか?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("a5", "o3")) Is Nothing Then Exit Sub
Cancel = True
Select Case Target.Address
Case "$A$5"
UserForm2.Show
Case "$O$3"
UserForm1.Show
End Select
End Sub
No.1ベストアンサー
- 回答日時:
>If Intersect(Target, Range("a5", "o3")) Is Nothing Then Exit Sub
???です。Select文があるので以下だけで良いと思います
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Address
Case "$A$5"
UserForm2.Show
Case "$O$3"
UserForm1.Show
End Select
End Sub
なおマクロは動いていますか? なんかのはずみでEventが発生しない状態になっていませんか? もし可能性があるなら
Sub Macro()
Application.EnableEvent = True
End Sub
を実行してからセルを選択してみてください
>Cancel = True
ついでですが、これは何でしょう? 意味のないセンテンスに見えますが…
この回答への補足
当初ユーザーフォーム1のみだったので
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("o3")) Is Nothing Then Exit Sub
UserForm1.Show
End Sub
としていたんです。今でもこれだけならフォームが呼び出されます。
もうひとつフォームを増やした為、Select文で呼び出すフォームを分けたのですが、Select文がうまく働いていないようです。
二つのセル以外を選択した場合の命令も必要かと思い、If文を付けたままにしました。必要ないのですね。勉強になりました。
Cancel = True は、BeforeDoubleClickの場合でも試していたので消し忘れてました。失礼しました。
教えていただいたSelect文だけにしてみたのですが、やはりフォームが呼び出されません。
No.3
- 回答日時:
こんばんは。
割り込み失礼します。
>If Intersect(Target, Range("o3")) Is Nothing Then Exit Sub
確かに、これで、UserForm ひとつを立ち上げるのは問題ありませんが、SelectionChange で、二つのセルを指定し、それに対してイベントを拾うのは、少し、確実性が低いです。それは、Click 自体がイベントではないからです。
その場合は、本来、DoubleClick イベントが良いと思います。
あえて、SelectionChange で行いたいなら、
Select Case Target.Cells(1).Address
Case "$A$5"
・
・
とするか、その手前に、If Target.Count =1 Then ~ End If とするぐらいしかないと思います。
No.2
- 回答日時:
#01です。
そうですか、では以下にしてみて下さい。私のPCでは動きました。Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Address
Case Is = "$A$5"
UserForm2.Show
Case Is = "$O$3"
UserForm1.Show
End Select
End Sub
なおIntersectで範囲重複を検出するなら
If Intersect(Target, Range("a5 , o3")) Is Nothing Then Exit Sub
だと思いますよ(Rangeの指定が不適切)
いずれにしてもステップ実行するか、ダミーのMsgboxを入れて、どのような動きをしているか確認してみてください
申し訳ありませんでした。
原因が解かりました。
A5、O3共にセルの結合をしているのが原因でした。
そのため、Target.addressが働かなかったようです。
Case "$A$5:$F$5"
UserForm2.Show
Case "$O$3:$Q$3"
UserForm1.Show
とすることでフォームを呼び出すことができました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Visual Basic(VBA) エクセル VBAで複数セル選択時エラーになる問題 3 2022/10/04 02:40
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について
-
エクセルのリストについて
-
【マクロ】元データと同じお客...
-
エクセルのVBAで集計をしたい
-
【画像あり】オートフィルター...
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
【マクロ】変数に入れるコード...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
【マクロ】左のブックと右のブ...
-
エクセルの複雑なシフト表から...
-
【マクロ】別ファイルへマクロ...
-
他のシートの検索
-
エクセルシートの見出しの文字...
-
vba テキストボックスとリフト...
-
【マクロ】【配列】3つのシー...
-
ページが変なふうに切れる
-
【マクロ】オートフィルターの...
-
【マクロ】列を折りたたみ非表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報