No.1ベストアンサー
- 回答日時:
昨日のちょっと応用するだけです。
変更前:
’if n.referstorange.rows.count = rows.count then '適宜応用の事
変更後:
if n.referstorange.parent.name = "消したいシート名" then
理解が必要なのは、ブックレベルの名前とシートレベルの名前は扱いが違う事です。迂闊にシート複写とかしてると、同じ名前でブックレベルとシートレベルが混在してる可能性もあります。どのレベルで名前を定義してるか、よく確認してください。
また注意が必要なのは、同じシートの範囲でも消してよい名前と消したくない名前があるんじゃないのという点です。
必要に応じより詳しい状況を添えて、別途ご相談を投稿してみて下さい。
どうもありがとうございました。
確認した限りでは問題なく動きました。
今回は、ブックレベルの名前でこのシートは複写等基本行わないので問題ないです。
また、このシートの名前定義は一度全消去してまるごと書き換えるので大丈夫です。
また、他のシートの名前の定義でうまくいかなかったら投稿するかもしれません。そちらは、複写等も行います。
No.2
- 回答日時:
こんにちは。
どちらかというと、昔の感覚では、危ないコードのようです。名前定義は、あまりVBAとは相性良くないようですから、時々、トラブルを起こしたようです。もし、VBAで削除出来なくなったら、手動で削除するようにしてください。
>特定のシート、例えばデータというシートに付けられた名前の定義を消す事は出来るでしょうか?
一応、前回の方のコードに手を入れさせていただきました。
'//
Sub Sample2()
Dim nm As Name
Dim dummy As Variant
Dim c As Variant
For Each nm In ActiveWorkbook.Names
If InStr(nm.RefersTo, ActiveSheet.Name) > 0 Then
nm.Delete
End If
Next nm
With ActiveSheet
For Each c In .Range("C3", .Cells(3, Columns.Count).End(xlToLeft))
On Error Resume Next
c.EntireColumn.Name = c.Value
If Err.Number > 0 Then
c.EntireColumn.Name = c.Value & "_" '名前に設定できない時
End If
On Error GoTo 0
Next c
End With
End Sub
'//
例えば、"c" とか、"r" という名前は使えません。その場合は、"_" アンダーバーが入ります。
また、このマクロには、欠陥があって、同名のセルの名前は、上書きされてしまいます。その場合は、何らかの工夫が必要です。そういうケースがあるときは、かならず、お礼欄に一言、お書きください。ここにアクセスしなくても、メールが届いて分かりますから。
どうもありがとうございました。
質問の動作について確認しましたが、問題なく動作しました。
前回の質問のエラー処理もしていただきありがとうございました。
MsgBox Range(Cells(3, i).Address)
を入れて、使えない名前を変えるようメッセージを出すようにしています。
上書き問題の事は考えていませんでした。
試しに他のシートのセルに名前をつけて、このマクロを動作させると他のシートにつけた名前が消えていました。
このシート内に定義した名前の上書きは問題ないのですが、別のシートに設定していた名前の上書きは少し唸りますが、おそらく別シートでこのシートで使うような名前を付ける事はないだろうと思うので大丈夫だと思います。
また、そういうケースが発生した場合にお尋ねするかもしれません。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要 6 2022/09/08 16:41
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Excel(エクセル) vba アクティブシートのA1セルの値を基準に複数のシートコピー&シート名を 6 2023/04/12 18:36
- Excel(エクセル) vbaで列幅について 1 2022/11/15 08:31
- Visual Basic(VBA) 複数シート一括作成後に、特定範囲の数式は値で貼り付けしたい 3 2022/10/07 11:18
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで前シートを参照して...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルで前のシートを連続参...
-
EXCELで同一フォーマットのシー...
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
VBAでシートコピー後、シート名...
-
エクセルで「Ctrl+F11」は何の...
-
Accessのスプレッドシートエク...
-
ピボットテーブルの集計セルを...
-
【Excel関数】値が合致するセル...
-
シートの保護のあとセルの列、...
-
Accessのマクロを使用してExcel...
-
エクセルで毎回1枚目のシートを...
-
エクセルでファイル保存時に複...
-
エクセルでファイルを開いたと...
-
別シートの最終行に貼り付けす...
-
Excelで同じシートのコピーを一...
-
特定のシートの削除を禁止した...
-
マクロ 「シートの順番」に反応...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
前の(左隣の)シートを連続参...
-
エクセルでファイルを開いたと...
-
Excelで金銭出納帳。繰越残高を...
-
EXCEL:同じセルへどんどん足し...
-
Excel、同じフォルダ内のExcel...
-
シート番号からシート名を取得する
-
シートの保護のあとセルの列、...
-
エクセルVBAでパスの¥マークに...
-
Excelのシートを、まとめて表示...
-
excelでシート毎の最終更新日を...
-
エクセルのシート名をリスト化...
-
Accessのスプレッドシートエク...
-
特定のシートの削除を禁止した...
-
エクセルで前シートを参照して...
-
エクセルで前のシートを連続参...
-
VBAでシートコピー後、シート名...
-
エクセル 計算式も入っていない...
-
複数シートの特定の位置に連番...
おすすめ情報