![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
例えば、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:結合されたセルに対する「Target」について
Access(アクセス)
-
VBAでセル範囲の「名前の定義」の有無を取得
その他(Microsoft Office)
-
-
4
Excelの選択範囲を特定のセル値をファイル名にしてPDFで保存する
Excel(エクセル)
-
5
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
6
excel vba 名前付きセルが存在しないとき
Excel(エクセル)
-
7
worksheet_changeがループする
PowerPoint(パワーポイント)
-
8
Worksheet_Change、名前の定義で分岐
その他(Microsoft Office)
-
9
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
10
エクセルvba (ByVal Target As Range)について
Excel(エクセル)
-
11
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
12
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
13
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
14
Worksheet_Change(ByVal Target As Range)の下に複数範囲
Excel(エクセル)
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
エクセルVBA Workbook変数に変数を使ったファイル名を格納したい
Visual Basic(VBA)
-
17
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
18
Excelの入力規則で2列表示したい
Excel(エクセル)
-
19
エクセルVBAで Cancel=Trueの使い方
Excel(エクセル)
-
20
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで英数大文字のみの入...
-
Apple IDの作成ができない。「...
-
認証コードが入力できない(同...
-
Excelが勝手に閉じてしまって困...
-
エクセルVBAでTargetのセルに設...
-
マンション名のローマ数字入力...
-
初歩的なことなんですが。produ...
-
左向きにエクセルで作成され申...
-
Win7PCでパスワードが認識され...
-
inputとenterの違い
-
youtube,ログインできない。
-
エクセルVBA、入力しないと閉じ...
-
マイコンのID解析
-
【キーボード】母音しか打てない…
-
キーボードで違う文字が出る
-
Excel:長い文字列が途中で切れる
-
Windows10。背面にあるウィンド...
-
エクセルマクロ セルをクリック...
-
エクセルで10進法から60進法に...
-
動画全画面再生してもタスクバ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで英数大文字のみの入...
-
マンション名のローマ数字入力...
-
認証コードが入力できない(同...
-
Apple IDの作成ができない。「...
-
inputとenterの違い
-
Excelが勝手に閉じてしまって困...
-
エクセルVBAでTargetのセルに設...
-
左向きにエクセルで作成され申...
-
エクセル 時間を.(ドット)で...
-
ifで10個以上の条件判断がしたい
-
Excelにて入力済セルへの再入力...
-
初歩的なことなんですが。produ...
-
teratermでユーザー変更したい
-
VLOOKUP関数で返した値(カタカ...
-
コマンドプロンプト表示が一瞬...
-
Excelでの操作エラー 「変更し...
-
個人情報入力の手間をはぶきたい
-
ワード・エクセルで日本語入力...
-
MS-DOSの使い方を教えてください。
-
key入力が正しく入力出来ません
おすすめ情報