
例えば、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も見ています
-
ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
高校生はアルバイトするべきだろうか?
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
限定しりとり
文字数6文字以上の単語でしりとりしましょう
-
チョコミントアイス
得意ですか?不得意ですか?できれば理由も教えてください。
-
かっこよく答えてください!!
あなたは今にも別れそうなカップルの彼女の恋愛相談に乗っています。
-
Excel VBA セルの名前があるか無いかを知るには?
Visual Basic(VBA)
-
VBAでセル範囲の「名前の定義」の有無を取得
その他(Microsoft Office)
-
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
-
4
Excelの選択範囲を特定のセル値をファイル名にしてPDFで保存する
Excel(エクセル)
-
5
excel vba 名前付きセルが存在しないとき
Excel(エクセル)
-
6
Worksheet_Change、名前の定義で分岐
その他(Microsoft Office)
-
7
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
8
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
9
エクセルvba (ByVal Target As Range)について
Excel(エクセル)
-
10
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
11
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
12
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
13
VBA実行後に元のセルに戻りたい
Visual Basic(VBA)
-
14
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
15
VBA プロシージャの名前の取得
その他(Microsoft Office)
-
16
VBA:結合されたセルに対する「Target」について
Access(アクセス)
-
17
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
18
エクセルVBAのDeleteキーによるエラー
Excel(エクセル)
-
19
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
20
Excelの入力規則で2列表示したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで英数大文字のみの入...
-
認証コードが入力できない(同...
-
マンション名のローマ数字入力...
-
左向きにエクセルで作成され申...
-
Excelが勝手に閉じてしまって困...
-
エクセル 時間を.(ドット)で...
-
初歩的なことなんですが。produ...
-
Apple IDの作成ができない。「...
-
エクセルVBAでTargetのセルに設...
-
エクセルVBA、入力しないと閉じ...
-
inputとenterの違い
-
【キーボード】母音しか打てない…
-
Excel:長い文字列が途中で切れる
-
Excelで数値を右詰めでセルに一...
-
タスクバーを常に最前面に表示...
-
Windows10。背面にあるウィンド...
-
エクセルで隣のセルに一月プラ...
-
Xfaceのタスクバーを下に移動す...
-
動画全画面再生してもタスクバ...
-
excel 図形に入れたテキストや...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで英数大文字のみの入...
-
認証コードが入力できない(同...
-
マンション名のローマ数字入力...
-
左向きにエクセルで作成され申...
-
エクセルVBAでTargetのセルに設...
-
エクセル 時間を.(ドット)で...
-
Apple IDの作成ができない。「...
-
inputとenterの違い
-
Excelが勝手に閉じてしまって困...
-
初歩的なことなんですが。produ...
-
タブレットPC文字入力の方法に...
-
コマンドプロンプト表示が一瞬...
-
Excel 対象のセルに入力が無い...
-
キーボードアプリの会社が収集...
-
ID PW の省略
-
ifで10個以上の条件判断がしたい
-
Excelにて入力済セルへの再入力...
-
アメリカのXPで日本又はアメリ...
-
♂♀の入力の仕方
-
エクセルVBA、入力しないと閉じ...
おすすめ情報