Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : その他)
シート名を削除とは?
投稿日時: 21/05/31 23:41:51
投稿者: A太郎

下記サンプルコードがエラーも出ず、処理もされません。
説明には、シートレベルで定義されている「名前」をすべて削除する。とあります。
◆質問
・シートの名前を削除とはどういう意味なのか?
・どうすれば動くのかご教示いただきたく。(環境はMS365です)
 
Dim mysht As Worksheet
Dim myname As Name
Set mysht = Worksheets(1)
For Each myname In mysht.Names
myname.Delete
Next
Set mysht = Nothing
 
 

回答
投稿日時: 21/06/01 06:09:33
投稿者: simple

セル範囲や、数式などにつける「名前」のことです。
「名前」には、ブックレベルの名前と、ワークシートレベルの名前があり、
ここでは後者を指しています。
決してワークシートの名前のことではありません。

回答
投稿日時: 21/06/01 09:15:50
投稿者: mattuwan44

 >説明には、シートレベルで定義されている「名前」をすべて削除する。とあります。
 
「名前」という情報をシートから削除する命令ができたとしても、
シートそのものを削除しているわけではありません。
「名前」は、どのシートかということを判別するためのただの情報にすぎません。
「シートそのもの(オブジェクト)」に対して削除の命令をしてください。
 
また、エクセルでは特定のセル範囲や特定の数式に名前を付けることが可能になっています。
この場合の名前は、その「定義した名前」が対象になります。
 
2019だと、
数式タグ→名前の管理
で出てくる名前の事になります。
シートレベルというのはその中での、
「範囲」という項目の設定になります。
 
興味があれば、「名前の定義 Excel」等で検索してみてください。
 

Dim mysht As Worksheet
Dim myname As Name
myname = Worksheets(1).name
For Each mysht In worksheets
if mysht.name = myname then
mysht.Delete
end if
Next

回答
投稿日時: 21/06/01 09:17:12
投稿者: mattuwan44

 >Dim myname As Name
 
dim myname as string
 
でした。

投稿日時: 21/06/01 11:22:56
投稿者: A太郎

simple様、mattuwan44様
 
早速ありがとうございました。
セル範囲などに名前を付けれることを知りませんでした。
シートレベルで名前を定義してVBAを実行したころうまく動きました。
理解がすすみました。