← コード一覧へ戻る
実務UserForm

テキストボックスに大文字しか入力させない:英小文字を変換する

入力された英小文字をUCase$で大文字へ直します。再入防止フラグを使い、貼り付けた英字にも対応します。

実行前に確認

  • 英小文字の大文字化が対象です。A~Zだけを許可する入力検証とは異なり、日本語・数字・記号は残ります。
  • 変換中は再びChangeが発生するため、mChangingで同じ処理への入り直しを止めています。
  • コードと公式仕様を照合した学習用の例です。Excel実機での実行確認は行っていません。

1サンプルコード

'【貼付先:UserForm1 のコードモジュール】
Option Explicit

Private mChanging As Boolean

Private Sub TextBox1_Change()
    Dim beforeText As String, afterText As String
    Dim caret As Long
    If mChanging Then Exit Sub
    beforeText = CStr(Me.TextBox1.Value)
    afterText = UCase$(beforeText)
    If StrComp(beforeText, afterText, vbBinaryCompare) = 0 Then Exit Sub
    caret = Me.TextBox1.SelStart
    On Error GoTo Failed
    mChanging = True
    Me.TextBox1.Value = afterText
    Me.TextBox1.SelStart = caret
    mChanging = False
    Exit Sub
Failed:
    mChanging = False
    MsgBox "変換できませんでした:" & Err.Description
End Sub

図で見る大文字に統一する

イメージ図

入力された英小文字をUCase$で大文字へ直します。再入防止フラグを使い、貼り付けた英字にも対応します。

  1. 入力

    abC12を受け取る

  2. 変換

    UCase$でABC12へ

  3. 保護

    変換中のChangeをフラグで除外

各操作は、このガイドに指定されたフォームのコードで行います。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[ユーザーフォーム]で、名前がUserForm1の空のフォームを用意します。各例は別々に試します。

  2. 2

    ツールボックスからTextBoxを1個(TextBox1)を置き、各コントロールの[(Name)]が記載どおりか確認します。

  3. 3

    UserForm1を右クリック→[コードの表示]を開き、掲載コード全体をフォームのコードモジュールへ貼り付けます。標準モジュールには貼り付けません。

  4. 4

    VBEでUserForm1を選び、F5でフォームを表示します。 TextBox1へ「abC12」を入力または貼り付けます。

  5. 5

    「ABC12」に変換されます。日本語や数字、記号を禁止する例ではありません。

使っている機能の公式ドキュメント(Microsoft Learn)