質問: vbaワーク シート名前を付けて作成 エクセルvbaにて 原紙とゆう名前のワークシートをコピー処理して 入力フォームにテキストボックス1と2があり コピーした原紙とゆうワークシート名から テキストボックス1と2に入力した項目が 合わさってワークシート名に変更する方法はあるのでしょうか? 例)テキストボックス1に 123 テキストボックス2に 456 コマンドボタン1をクリックすることによって ワークシート名が123456となるようにしたいのですが? 宜しくお願いいたします。
回答: こんにちは。 #2の回答者です。気に入るかどうか分かりませんが、 ひとつのアイデアなのです、単に、シート名に入れられない文字列ではじくよりも、今のコードのままで、その「/」を抜くという方法がありますね。 特に、日付という前提ではないのですが、11/09 などの日付の、「/」を取り去るシートエラーチェックはいかがでしょうか?ただし、今回は、「/(半角)」も「/(全角)」も同じに扱いますから、これらの文字がある限りは、取り去ってしまいます。 以下のコードを、そのまま置き換えてくださるか、 byref shname as string の byref (参照渡し)を入れ、 for each ~ next v の間を入れ替えてくだされば可能です。 --------------------------------------------------------------- private function shnamecheck(byref shname as string) as boolean 'シート名のエラーチェック dim v as variant dim i as integer dim sh as object if len(shname) > 30 then shnamecheck = false: exit function buf = shname for each v in array(":", "\", "/", "?", "*", "(", ")", " ") buf = replace(buf, v, "", , , vbtextcompare) '変更点 next v shname = buf for each sh in activeworkbook.sheets if strcomp(sh.name, shname, vbtextcompare) = 0 then shnamecheck = false: exit function next sh shnamecheck = true end function ---------------------------------------------------------------