Excel

【Excel】VBAマクロの入力フォームをセルに反映(呼び出し・テキストボックスも:作成:日付も:InputBox:TextBox1)する方法

当サイトでは記事内に広告を含みます

この記事ではVBAマクロの入力フォームをセルに反映(呼び出し・テキストボックスも:作成:日付も)する方法について解説していきます。

ポイントとしてはInputBox、TextBox1を使用することです。

なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。

そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。

それでは詳しく見ていきましょう!

VBAマクロの入力フォームを作成し、呼び出してアクティブセルに反映する方法

それではまず、VBAマクロの入力フォームを作成し、呼び出してアクティブセルに反映する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub InputBoxWoHyouji()
    'アクティブセルにInputBoxの値を入力する
    
    Dim StMsg As String  'InputBoxの説明メッセージを格納する変数
    Dim TitleMsg As String  'InputBoxのタイトルを格納する変数
    Dim DefaultText As String  'InputBoxのデフォルトで表示する値を格納する変数
    Dim InputStr As String  'InputBoxの入力値を格納する変数
    
    StMsg = "値を入力してください。"  'InputBoxの説明メッセージを設定
    TitleMsg = "入力フォーム"  'InputBoxのタイトルを設定
    DefaultText = ""  'InputBoxのデフォルトで表示する値を設定
    
    'InputBoxを表示し、入力値を取得
    InputStr = InputBox(StMsg, TitleMsg, DefaultText)
    
    'InputBoxの入力値をアクティブセルに反映
    ActiveCell.Value = InputStr
    
End Sub

コードのAlt+F8を押し、マクロ選択画面でInputBoxWoHyouji関数を実行します。

 

このコードではInputBox関数を使用して、入力フォームを表示し、入力された値をアクティブセルに反映しています。

まず変数StMsgにInputBoxの説明メッセージ、TitleMsgにInputBoxのタイトル、efaultTextにInputBoxのデフォルトで表示する値を設定しています。

次にInputBox関数を使用して入力フォームを表示し、入力された値をInputStr変数に格納します。

最後にActiveCell.Value = InputStrでInputBoxの入力値をアクティブセルに反映しています。

 

VBAマクロの入力フォームを作成し、呼び出してテキストボックスに反映する方法

続いては、VBAマクロの入力フォームを作成し、呼び出してテキストボックスに反映する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub UserFormWoHyouji()
    'ユーザーフォームを表示し、入力値をTextBox1に反映する
    
    Dim StMsg As String  'ユーザーフォームのラベルに表示するメッセージを格納する変数
    Dim DefaultText As String  'テキストボックスのデフォルト値を格納する変数
    
    StMsg = "値を入力してください。"  'ユーザーフォームのラベルに表示するメッセージを設定
    DefaultText = ""  'テキストボックスのデフォルト値を設定
    
    'ユーザーフォームを作成
    With ThisWorkbook.VBProject.VBComponents.Add(3)
        .Properties("Caption") = "入力フォーム"  'ユーザーフォームのキャプションを設定
        With .CodeModule
            .InsertLines 1, "Private Sub UserForm_Initialize()"
            .InsertLines 2, "    Me.Label1.Caption = """ & StMsg & """"
            .InsertLines 3, "    Me.TextBox1.Text = """ & DefaultText & """"
            .InsertLines 4, "End Sub"
        End With
        
        With .Designer
            .Controls.Add "Forms.Label.1"
            With .Controls("Label1")
                .Caption = StMsg  'ラベルのキャプションにメッセージを設定
                .Height = 18
                .Width = 100
            End With
            
            .Controls.Add "Forms.TextBox.1"
            With .Controls("TextBox1")
                .Text = DefaultText  'テキストボックスのデフォルト値を設定
                .Height = 18
                .Width = 100
                .Top = 24
            End With
        End With
    End With
    
    'ユーザーフォームを表示
    UserForm1.Show
    
End Sub

コードのAlt+F8を押し、マクロ選択画面でUserFormWoHyouji関数を実行します。

このコードではユーザーフォームを動的に作成し、TextBox1にユーザーの入力値を反映しています。

まず変数StMsgにユーザーフォームのラベルに表示するメッセージ、DefaultTextにテキストボックスのデフォルト値を設定しています。

次にThisWorkbook.VBProject.VBComponents.Add(3)でユーザーフォームを作成し、ラベルとテキストボックスをユーザーフォームに追加しています。

最後にUserForm1.Showでユーザーフォームを表示しています。

ユーザーがテキストボックスに値を入力し、OKボタンを押すと、その値がTextBox1に反映されます。

 

まとめ VBAマクロの入力フォームの呼び出しや作成(テキストボックスにも反映:日付も:InputBox:TextBox1)する方法

以上、VBAマクロの入力フォームをセルに反映(呼び出し・テキストボックスも:作成:日付も)する方法について解説してきました。

VBAマクロを使いこなして、作業の自動化や効率化を図っていきましょう!