
エクセルのセル範囲(結合セル)にいろいろな名前を定義してあります。
名前の定義されたセル範囲を変更した場合、マクロが動くようにしたいのです。
ところが、名前の定義のないセルを変更すると
「実行時エラー1004、アプリケーション定義またはオブジェクトの定義のエラーです」
になってしまいます。
一応、下記のような方法で解決はできましたが、エラーで判断するのではなく、名前の定義の有無を取得して分岐させるのが正しい?やりかたなのではと思います。
ご教示いただけましたら幸いです。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As String
On Error Resume Next
x = Target.Cells(1).Name.Name
On Error GoTo 0
If x = "" Then Exit Sub
Select Case Target.Cells(1).Name.Name
Case "住所"
Range("送付先住所").Value = Target.Value
Case "氏名"
Range("送付先氏名").Value = Target.Value
End Select
End Sub
No.1ベストアンサー
- 回答日時:
エラーで判断するのが正しいやり方ではないなどとは言えないと思います。
それで安全に動けばいいのではないですか。
nameを調べるなら、全部のnameにあたるしかないでしょう。
次のようなコードでどうでしょう。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As String, ad As String, lad As Integer
ad = Target.Address
lad = Len(ad)
For Each nm In ActiveWorkbook.Names
If ad = Right(nm.RefersTo, lad) Then
x = Target.Name
End If
Next
If x = "" Then Exit Sub
Select Case Target.Name.Name
Case "住所"
Range("送付先住所").Value = Target.Value
Case "氏名"
Range("送付先氏名").Value = Target.Value
End Select
End Sub
さっそくありがとうございます。
全部の「名前の定義」に総当りしなければいけないということは、ある任意のセルに名前が定義されているかどうかを直接取得する方法はないということなのでしょうか。
No.4
- 回答日時:
>「名前の定義」の有無を取得
するわけではないですが、提示の例題に限って言えば、
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
With Target
Select Case True
Case Not Intersect(.Item(1), Range("住所")) Is Nothing
Range("送付先住所").Value = .Value
Case Not Intersect(.Item(1), Range("氏名")) Is Nothing
Range("送付先氏名").Value = .Value
End Select
End With
Application.EnableEvents = True
End Sub
このように、とにかくIntersectメソッド実行してNothing判定という方法もあるかもしれません。
ただ、
Range("住所")とRange("氏名")を含めたセル範囲を同時に選択してクリアしたり、
などはどういう対応になりますか?
そのケースも考慮するなら、
それぞれIntersectメソッドの結果を取得して処理する必要があります。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Application.EnableEvents = False
Set r = Intersect(Target, Range("住所"))
If Not r Is Nothing Then
Range("送付先住所").Value = r.Value
End If
Set r = Intersect(Target, Range("氏名"))
If Not r Is Nothing Then
Range("送付先氏名").Value = r.Value
End If
Application.EnableEvents = True
End Sub
でも提示のケースはあくまで例題なのですよね?
それだけの用途なら関数をセットしておくほうが簡単な気がします。
No.2
- 回答日時:
以下の様な記述でもいいです。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As String
Dim N As Name
For Each N In ActiveWorkbook.Names
If Not Intersect(Target, Range(N.RefersToLocal)) Is Nothing Then
x = N.Name
Exit For
End If
Next N
If x = "" Then Exit Sub
Select Case x
Case "住所"
Range("送付先住所").Value = Target.Value
Case "氏名"
Range("送付先氏名").Value = Target.Value
End Select
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
お店等で氏名・住所を書かされ...
-
郵便振込の「依頼人」欄の内容
-
VBAでセル範囲の「名前の定義」...
-
封筒を折っても、定形郵便扱い...
-
どこの郵便局から出したか、わ...
-
退職済みの社員宛てに届く郵便...
-
郵便局で郵便物を出すときに 備...
-
友達へ手紙を送りたいのですが...
-
定期を家に忘れてしまいました...
-
電車で精液かけられました。 学...
-
「おせんにキャラメルー」のあ...
-
証紙切手引受とは切手を貼って...
-
メルカリで商品IDを書きたくあ...
-
会社に結婚したことを内緒にし...
-
社員証の適切な送り方を教えて...
-
窓口発送の場合は切手は貼らな...
-
士族、安藤家が明治以前、江戸...
-
郵便番号119で始まる「クイ...
-
A4サイズの封筒を半分に折って...
-
切手は余分に貼ってもいいもの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
お店等で氏名・住所を書かされ...
-
大学の事務に書類を渡しに行っ...
-
郵便振込の「依頼人」欄の内容
-
ネット友達に個人情報を教えて...
-
VBAでセル範囲の「名前の定義」...
-
個人情報のこと
-
領収書に記載する事項について
-
郵便局止めについて(アダルトもの)
-
太田市明林公園について
-
ドメインの「WHOIS情報公開代行...
-
小為替
-
SNS サイトの運用に必要な記載。
-
高校願書の保護者欄記入につい...
-
オークションで定形外でお願い...
-
その人がまだその住所に住んで...
-
社会と情報のテストで、学園祭...
-
メルカリについて。 「本人情報...
-
アクセス解析で個人情報はわか...
-
群馬県太田市は、楽天エリア 何...
-
クレジットカードに詳しい方!...
おすすめ情報