dポイントプレゼントキャンペーン実施中!

いつもお世話になります

今同じシート名の存在を確認して、同じ名前のシート名が有る時は削除してから
シートを追加し、名前を変更するステートメントを作成しています

     File2="WC(品)"
For Each ws In Worksheets
If ws.Name = FILE2 Then
Application.DisplayAlerts = False
Worksheets(ws.Name).Delete
Application.DisplayAlerts = True
Exit For
End If
Next ws

Worksheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = FILE2

既存のシートには前回作った"WC(品)"が有ったのですが
シートの有無チェックには掛からずに下記のエラーが発生しました

エラー:"この名前は既に使用されています。別の名前を入力してください"

エラーが出たときはちょっとびっくりしました。
今はStrConvを使ってエラーを回避させていますがちょっと気に掛かるので教えてください

ActiveSheet.Nameは全角と半角の区別は出来ないのでしょうか?
以上、よろしくお願い申しあげます

A 回答 (3件)

こんにちは



>ActiveSheet.Nameは全角と半角の区別は出来ないのでしょうか?
.Nameの結果は文字列ですので、文字列比較で大文字小文字を混同することはありません。
区別できているからこそ、ご提示のチェックルーチンでは別物と見做されていることになります。

一方で、マクロは「手操作の自動化」のようなものですから、手操作でテストしてみればわかります。
例えば、「WC(品)」というシートがある状態で、
・"WC(品)"というシートを別に作成しようとすると、ご質問のエラーが出ます
 (名前を逆にしても、当然ですが同様です)
・Worksheets("WC(品)").Activate を実行してみると、「インデックスが~」のエラーとなり、認識されません。

このことから、シート作成時のチェックでは「全角半角を同一視」しているけれどシートの指定時などでは「全角半角は区別される」という仕様になっているらしいことがわかります。
M$お得意の勝手な仕様ですが、そうなってしまっているので、文句を言っても仕方のないところですね。
    • good
    • 1
この回答へのお礼

早速のご回答に感謝します

そうなんですね
ありがとうございます
これからもよろしくお願いいたします

お礼日時:2024/06/17 15:18

vba中のチェックでは区別します。


シート名を付けるActiveSheet.Name = FILE2が区別していません。

手でシート名を変える操作をして見れば解ります。
半角、全角を区別していません。

これはvbaのスペックでは無くて、エクセルのスペックです。
    • good
    • 0
この回答へのお礼

ご回答の送信、ありがとうございます

そうなんですね、Excelのスペックなんですね
分りました、諦めます
これからもよろいたしますいたします

お礼日時:2024/06/17 17:51

> ActiveSheet.Nameは全角と半角の区別は出来ないのでしょうか?



いや、ActiveSheet.Nameは全角と半角の区別ができるけれども、Excelが全角と半角の区別をつけないから「この名前は既に使用されています。」になるのだと思われます。
    • good
    • 2
この回答へのお礼

なるほど

社内で使っているプログラムなんですが
みんなにも伝えます
ありがとうございました

これからもよろしくお願いいたします

お礼日時:2024/06/17 15:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A