セルに名前を定義したマクロファイルが壊れてしまい、新しファイルに、表をセル範囲を選択してコピペしたものの、定義した名前は、消えてしまいました。
シートのコピーは、モジュールがありませんというエラーのためできずです。
壊れたファイルで定義されている30種類の名前を、新しいファイルの50シートぐらいに反映させたいコードの一例ですが、30種類の名前は、各シートの異なるセル番地で使用します。
下記のコードの間違いをどなたかご指摘いただけませんでしょうか?
各シート、各名前で異なるセル番地は、B列に入れたEND文字の入ったセルを起点として検索して反映したいと考えたコードが下記です。
Worksheet.Cells(Range("B:B").Find("END").Row - 4, 73).CurrentRegion.Name = Worksheet.Name & "XXX"
初心者のため、少ない情報かつわかりにくい質問ですみません。
なんとかこんな事をしたいのだろうと推測でも構いませんので、上記のコードが指定したセルに、範囲がREFにならずに、名前を定義してくれるように、アドバイスいただけませんでしょうか?
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
B列を基点にするのはわかりますが、73列目からCurrentRegionってデータの集まりが離れているって事でしょうかね?
上記をそのままブックにある全てのシートに対して行なうとしたら、
Sub megu()
Dim ws As Worksheet
For Each ws In Worksheets
With ws
.Cells(.Range("B:B").Find("END").Row - 4, 73).CurrentRegion.Name = .Name & "XXX"
End With
Next
End Sub
このような感じでしょうか?
あるいはCurrentRegionが不具合ならResizeとかになりますけど、結局のところどの範囲に名前を付けたいのかが不明ですし。
お察しいただきありがとうございます。
そのように修正して、試してみました。
XXXと定義した名前は、ちゃんと名前の管理に現れてくれました。
ところが、それぞれに1ヶのセル番地を指定しているはずなのに、
参照範囲が例えば、=ABF!$BC$302:$BE$307のように複数になってしまうのは、なぜでしょうか?
今セルの結合を解除しているところです。
No.2
- 回答日時:
こんにちは
情報が少なすぎてよくわかりませんが・・・
>範囲がREFにならずに、名前を定義してくれるように
それって、ご提示のコードが実行できていて、定義範囲がREFになってしまうということでしょうか?
実行できていれば、何らかの範囲が指定されるように思いますので、そのような結果になるとは思えないのですが・・?
実行できなくて(=エラーで中断していて)、以前の定義(=壊れた?ので、名前の参照がREFになっている)がそのまま残っているだけということはないのでしょうか?
ご提示のコードで気になる点
・WorkSheetって変数で使用することはないと思いますが(オブジェクト名なので)、ご提示のWorkSheet変数には、どこかで具体的なワークシートオブジェクトが代入されているのでしょうか?(そのままだと、未定義なのでエラーになる)
・B列の"END"が4行目以前の行に存在する場合やそもそも存在しない場合には、そのままのコードではエラーが発生すると思いますが、そのようなことは起きないことが保証されていますか?
ご質問文からひとまず想像できそうな回答例は、すでにNo1様がご提示済なので省略です。
お察しいただきありがとうございます。
この質問用にwsをWorksheetとしてしまったので、実際にはコードは、実行できていました。
ただ指定したセルに定義されずでした。
>名前の参照がREFになっている
それありえます。名前をきれいにしてから、No.1さんのアドバイスのFor Each ws In Worksheets With ws End Withを使ってやりなおしてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) エクセルのマクロコードの一部分を変更する方法について教えてください。 2 2023/02/17 08:40
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】指定行以降をクリ...
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定のセルが空白だったら、そ...
-
Excelのプルダウンで2列分の情...
-
DataGridViewの各セル幅を自由...
-
VBAでセルをクリックする回...
-
【Excel】指定したセルの名前で...
-
TODAY()で設定したセルの日付...
-
DataGridViewで右寄せ左寄せが...
-
連続する複数のセル値がすべて0...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
Application.Matchで特定行の検索
-
Excel VBA、 別ブックの最終行...
-
エクセルVBAでコピーして順...
-
VLOOKUP関数で別ファイルを指定...
-
VBA コピーして次の値まで貼り...
-
【VBA】指定したセルと同じ値で...
-
ExcelのVBAで数字と文字列をマ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
Excel vbaで特定の文字以外が入...
-
特定の文字を条件に行挿入とそ...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
Excelのプルダウンで2列分の情...
-
EXCELで変数をペーストしたい
-
連続する複数のセル値がすべて0...
-
Excel VBA、 別ブックの最終行...
-
VBAを使用した時間管理
-
エクセルVBAでコピーして順...
-
セル色なしの行一括削除
-
【EXCEL VBA】Range("A:A").Fi...
-
VBA コピーして次の値まで貼り...
-
VBA初心者です。結合セルを保持...
おすすめ情報
ENDの文字が入っているセルから上に4ヶめ右に73ヶめに定義したい場合のコードのつもりです。