【VBA×初学者向け】文字数制限、禁則文字を回避してシート作成する方法

みなさんこんにちは。

VBAでシートを新たに作成する際、

無意識にシートを作成すると禁則文字制限に引っかかったり、
文字数制限に引っかかったりすることがあります。

今回は、その禁則文字や文字数制限を回避して
効率良くシートを作成する方法について紹介したいと思います。

この記事はこんな人におすすめ

この記事はこんな人におすすめです!

  • VBAプログラミング:初級者~中級者
  • コードだけサクッと取得したい人
  • 効率の良いコードを書きたい人

といったところでしょうか。

シートを効率よく作成するメリット

本ブロブの内容を基にシートを作成するメリットは以下のとおりです。

  • コードの可読性向上
  • 想定外のエラーの回避
  • VBAの基礎スキル定着

といったところでしょうか。

シート作成は日常業務でも使用する機会が非常に多いかと思いますので、

一度やり方を覚えてしまえばかなり有効的なスキルになるかと思います。

ワークシート作成時の制約について

ワークシート作成時の制約については、こちら【ワークシート作成時の制約】をご参照ください。

準備

1.ボタンを作成します。

2.[開発]タブ→[挿入]グループ→[フォームコントロール]→[ボタン]を選択します。

3.MakeSheetと名前を付けて、新規作成ボタンをクリックします。

4.ボタンのテキストを「シート作成」とします。

コード紹介

禁則文字を削除する関数は以下の通りになります。

'/////////////////////////////////////////////////////
' 禁則文字列をLike演算子で処理し、削除する
'/////////////////////////////////////////////////////
Function 禁則文字を削除する関数(新シート名称 As String) As String
    Dim 禁則文字一覧
    禁則文字一覧 = Split("',’,',*,:,?,\,¥,*,/,:,?,[,[,],],\,/,<,>", ",")
    Dim 禁則文字
    For Each 禁則文字 In 禁則文字一覧
        新シート名称 = Replace(新シート名称, 禁則文字, "")
    Next
    禁則文字を削除する関数 = 新シート名称
End Function

文字数制限を判定する関数は以下の通りになります。

'/////////////////////////////////////////////////////
' 文字数制限を判定
'/////////////////////////////////////////////////////
Function 文字数制限をする関数(新シート名称 As String) As String
    If Len(新シート名称) > 31 Then
        新シート名称 = Left(新シート名称, 30)
    End If
    文字数制限をする関数 = 新シート名称
End Function

MakeSheet関数は以下のようにします。

'/////////////////////////////
' シートを作成する
'/////////////////////////////
Sub MakeSheet()
    Dim 新シート名称 As String
    新シート名称 = "シートタイトル"

    ' 禁則文字の判定
    新シート名称 = 禁則文字を削除する関数(新シート名称)
    
    ' 文字数制限の判定
    新シート名称 = 文字数制限をする関数(新シート名称)
    
    Worksheets.Add
    ActiveSheet.Name = 新シート名称
End Sub

検証

正常系のシート名を検証する

シート作成ボタンをクリックすると、「シートタイトル」というシートが作成されました!

禁則文字と文字数制限に触れるシート名を指定する。

変数名新シート名称を以下のとおり変更したコードに書き換えます。

'/////////////////////////////
' シートを作成する
'/////////////////////////////
Sub MakeSheet()
    Dim 新シート名称 As String
    新シート名称 = "エラーになるシートタイトル:?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ"

    ' 禁則文字の判定
    新シート名称 = 禁則文字を削除する関数(新シート名称)
    
    ' 文字数制限の判定
    新シート名称 = 文字数制限をする関数(新シート名称)
    
    Worksheets.Add
    ActiveSheet.Name = 新シート名称
End Sub

禁則文字が削除され、30文字まで設定されたシート名が作成されました。

最後に

いかがでしたでしょうか。

シートの作成自体は簡単にできますが、

そこに潜む制約についてはVBA初学者が見落としがちな内容かと思います。

少しでもご参考になれば幸いです。

開発依頼について

ココナラでWebスクレイピング開発サービスを出品しております。

自分で開発をしようと思ったけど、依頼したり、何か聞きたいことがあったりしたら

いつでもお気軽にご相談ください。

また、内容についてご不明点があればメッセージをいただけると幸いです。

Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!

ご興味がある方はこちら!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA