
例えば、A1、B2、C3セルに「名前の定義」で、それぞれ入力A、入力B、入力C という名前がつけてあります。
それらのセルに入力があった場合、Select Caseで分岐させ作動するマクロをつくりました。
簡略化すると以下のようなもので、一応正しく作動します。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("入力A,入力B,入力C")) Is Nothing Then Exit Sub
Select Case Target.Address(0, 0)
Case "A1"
MsgBox "A処理します。"
Case "B2"
MsgBox "B処理します。"
Case "C3"
MsgBox "C処理します。"
End Select
End Sub
ただ、せっかくセルに名前を定義してあるのに、個々の入力セルの判定をTarget.Addressでしているのが不満です。
( ̄~ ̄;)
定義された名前を使えないかと以下のようにやってみましたが実行時エラーで「サポートしてません」となってしまいます。
(T.T)
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("入力A,入力B,入力C")) Is Nothing Then Exit Sub
Select Case Target.Names.Name 'ここでエラー
Case "入力A"
MsgBox "A処理します。"
Case "入力B"
MsgBox "B処理します。"
Case "入力C"
MsgBox "C処理します。"
End Select
End Sub
どうやったら、Targetに設定されている名前を取得できるのでしょうか?
(^∇^`)?
実際の例はもっと対象が多いので、Select Caseを使わない以下の方法は避けたいのです。
If文の羅列(これでも正しく作動はします。)
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("入力A,入力B,入力C")) Is Nothing Then Exit Sub
If Not Intersect(Target, Range("入力A")) Is Nothing Then
MsgBox "A処理します。"
ElseIf Not Intersect(Target, Range("入力B")) Is Nothing Then
MsgBox "B処理します。"
Else
MsgBox "C処理します。"
End If
End Sub
なにとぞよろしくお願いします。 (o。_。)oペコッ
No.1ベストアンサー
- 回答日時:
エキスパートさん、遅ればせながら、おめでとさんです!
今年もよろしゅう願います。
>Select Case Target.Names.Name 'ここでエラー
最初の Names のsは省いて、
Select Case Target.Name.Name
以上です。
あ、大師さま、お久しぶりでございます。
ヾ(=^▽^=)ノ
本年もご指導のほどよろしくお願い申し上げます。
(o。_。)oペコッ
明快なご回答ありがとうございます。
それにしても何とも間抜けな質問でした。
/(^o^)\ナンテコッタイ
失礼いたしました。
No.2
- 回答日時:
こんにちは^^
サブプロシージャにしてみたら?
あと、名前 TEST1,TEST2 に属するセルが一度に更新された場合
の処理なんかを考えれば、下記のような仕組みでどうですか?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, n As Variant
For Each n In Array("TEST1", "TEST2", "TEST3")
Set r = Intersect(Range(n), Target)
If Not r Is Nothing Then
Call ChangeEventSubProcedure(r, n)
End If
Next
Set r = Nothing
End Sub
Private Sub ChangeEventSubProcedure( _
ByVal r As Range, _
ByVal sRngName As String _
)
Dim s As String
Select Case sRngName
Case "TEST1": s = r.Address & vbLf & "A 処理"
Case "TEST2": s = r.Address & vbLf & "B 処理"
Case "TEST3": s = r.Address & vbLf & "C 処理"
End Select
MsgBox s
End Sub
KenKen_SPさま、いつもありがとうございます。
こういうやり方があるんですね、勉強になります。
これからもご指導くださいませ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- 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
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBA セルの名前があるか無いかを知るには?
Visual Basic(VBA)
-
VBAでセル範囲の「名前の定義」の有無を取得
その他(Microsoft Office)
-
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
-
4
excel vba 名前付きセルが存在しないとき
Excel(エクセル)
-
5
Worksheet_Change、名前の定義で分岐
その他(Microsoft Office)
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
エクセルvba (ByVal Target As Range)について
Excel(エクセル)
-
8
VBA:結合されたセルに対する「Target」について
Access(アクセス)
-
9
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
10
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
11
Excelの選択範囲を特定のセル値をファイル名にしてPDFで保存する
Excel(エクセル)
-
12
VBA実行後に元のセルに戻りたい
Visual Basic(VBA)
-
13
Excelの入力規則で2列表示したい
Excel(エクセル)
-
14
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
15
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
16
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
17
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
18
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
19
excelで セルの移動時にマクロ実行を設定したい。
Excel(エクセル)
-
20
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで英数大文字のみの入...
-
認証コードが入力できない(同...
-
マンション名のローマ数字入力...
-
Yahooメール画面に簡単に入りたい
-
左向きにエクセルで作成され申...
-
エクセルVBAでTargetのセルに設...
-
teratermでユーザー変更したい
-
コマンドプロンプト表示が一瞬...
-
Apple IDの作成ができない。「...
-
初歩的なことなんですが。produ...
-
システムのプロパティがひらけ...
-
至急 奨学金のスカラネットで識...
-
エクセルVBA、入力しないと閉じ...
-
タブレットPC文字入力の方法に...
-
【キーボード】母音しか打てない…
-
Excel:長い文字列が途中で切れる
-
Windows10。背面にあるウィンド...
-
ExcelからPDF文書の特定ページ...
-
エクセルで10進法から60進法に...
-
エクセルマクロ セルをクリック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで英数大文字のみの入...
-
認証コードが入力できない(同...
-
マンション名のローマ数字入力...
-
左向きにエクセルで作成され申...
-
Apple IDの作成ができない。「...
-
エクセルVBAでTargetのセルに設...
-
Excelが勝手に閉じてしまって困...
-
エクセルVBA、入力しないと閉じ...
-
システムのプロパティがひらけ...
-
inputとenterの違い
-
エクセル 時間を.(ドット)で...
-
至急 奨学金のスカラネットで識...
-
初歩的なことなんですが。produ...
-
Excel 対象のセルに入力が無い...
-
Excelにて入力済セルへの再入力...
-
コマンドプロンプト表示が一瞬...
-
ダイアルアップルータcisco800...
-
Apple ID パスワード 画面のよ...
-
タブレットPC文字入力の方法に...
-
VLOOKUP関数で返した値(カタカ...
おすすめ情報