• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA初心者です。教えて下さい。)

VBA初心者のためのテキストボックスへの値の一括入力方法

このQ&Aのポイント
  • VBA初心者の方がテキストボックスに決められた値を一括で入力する方法について教えてください。
  • 現在、1つずつテキストボックスに値を入力しているのですが、より効率的な方法があれば知りたいです。
  • Forループを使って一括で値を入力しようとしましたが、エラーが発生します。スマートな方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.2

> Excel VBA(userForm)上ではうまく動いてくれませんでした、、、。 こちらではちゃんと動いていますが…… コードの場所によっては  Me.Controls → フォーム名.Controls に変える必要があります。 何かエラーメッセージが出るのですか?

wansui
質問者

お礼

ごめんなさいやり方がまずかったようで ご教示いただいたコードでやりたい事が出来ました! お礼が遅くなり申し訳ありません! 本当にありがとうございました!^^ リアルだったらメシでも奢りたいくらいです!! まじありがっとおおおww (^-^)v ぶい

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

For i = 0 To 100  Me.Controls("TextBox" & i).Text = i & "です。" Next

wansui
質問者

補足

既に上記の方法は試し済みでした。 Excel VBA(userForm)上ではうまく動いてくれませんでした、、、。 やり方はダメなのかな、、、?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • WordのVBAにてコントロール名に変数を使いたい

    Wordでコントロールツールボックスのコントロールを複数個並べて、コントロール名を変数で切り替えたいと思っています。 例えば、テキストボックスを3つ並べた時、以下のように「i」を変数にしてFor文でまわしたいです。 【例】 TextBox1 TextBox2 TextBox3  ↓ For i=1 to 3 TextBox「i」= ・・・(A) Next i Excelであれば、(A)の部分は、以下のようにOLEObjectsを使えば実現できますが、Wordではコンパイルエラーが出てしまいます。 Dim strName As String For i=1 to 3 strName = "TextBox" & i Me.OLEObjects(strName).Object・・・ next i どのようにすればよいのか、ご教授いただけると幸いです。 お願いします。

  • EXCEL VBA ユーザーフォーム内のテキストボックスを一括処理する方法について

    EXCEL VBAのユーザーフォームについて質問があります。 ユーザーフォームを作り、その中にコンボボックスを1個、テキストボックスを100個設置する。 コンボボックスの値が1のときはテキストボックス1~テキストボックス50までのEnabledをFalseに設定し、 コンボボックスの値が2のときはテキストボックス1~テキストボックス100までのEnabled をFalseに設定する。 このとき、TextBox1.Enabled = False、TextBox2.Enabled = False・・・と一つ一つ書いていくのではなく、 セルを処理するときと同様に、テキストボックスの番号を変数にして処理することは可能でしょうか。 Private Sub ComboBox1_Change()  Dim i As Integer   If ComboBox1.Value = 1 Then   For i = 1 To 50   TextBox(i).Enabled = False   Next i   ElseIf ComboBox1.Value = 2 Then   For i = 1 To 100   TextBox(i).Enabled = False   Next i   End If End Sub というような処理をイメージしているのですが、うまくいきません。どうぞよろしくお願いいたします。

  • VBAのFor構文で

    質問させていただきます。 IF textBox1.value = "" then End If のように、VBAのテキストボックスが空白の場合に起動する構文を作ろうと考えているのですが、 このテキストボックスの数が多いので、どうにかして短く出来ないかと考えています。 VBAのテキストボックスを直接For構文で変更する事は可能なのでしょうか? 例えば For i = 1 to 20 IF textBox(i).value = "" then End If Next i 上記のような構文では実際に動かしたときにtextBoxの指定がされていないのでエラーが出てしまいます。 やはり、各テキストボックスごとに構文を作らなければならないのでしょうか? もし可能なら、その方法を教えていただきたいです。

  • VBAとVB6.0とC#の速度比較

    ■VBA(Excel2002)でユーザーフォームを追加し、extboxとCommandButtonを1つずつ設置しました。 Buttonを押すと↓が動き出します。 dim i as integer for i= 0 to 10000 TextBox1.text = i next i ■VisuaBasic 6.0 Proでフォーム上にTextboxとCommandButtonを1つずつ設置しました。 EXEファイルを生成し、Buttonを押すと↓が動き出します。 dim i as integer for i= 0 to 10000 TextBox1.text = i next i ■Visual C# 2005 Express Editionで フォーム上にTextboxとCommandButtonを1つずつ設置しました。 EXEファイル生成後、Buttonを押すと↓が動き出します。 for (int i = 0; i <= 10000; i++) textBox1.Text = i.ToString(); 結果、一番速く表示されたのがVBAだったのですが、 一般的に遅いとされるVBAが一番速くなった原因(要因?)は何でしょうか? よろしくお願いします。

  • テキストボックスの数値を3桁ごとに区切りたい。

    テキストボックスの数値を3桁ごとに区切りたい。 エクセルのユーザーフォームにテキストボックスを1~7まで並べています。 テキストボックス1~6の合計を7に入れるようにしています。 テキストボックスに記入するVBAは以下のように投入しています。 合計は上手く表示されるのですが、3桁ごとに「,」の区切りを入れたいと思っています。 どのように記述したらよいのか、教えていただけないでしょうか。 -------------------------------------- Private Sub TextBox1_AfterUpdate() Dim i Dim res For i = 1 To 6 res = res + Val(Me.Controls("TextBox" & i).Value) Next i TextBox7 = res End Sub Private Sub TextBox2_AfterUpdate() Dim i Dim res For i = 1 To 6 res = res + Val(Me.Controls("TextBox" & i).Value) Next i TextBox7 = res End Sub Private Sub TextBox3_AfterUpdate() Dim i Dim res For i = 1 To 6 res = res + Val(Me.Controls("TextBox" & i).Value) Next i TextBox7 = res End Sub Private Sub TextBox4_AfterUpdate() Dim i Dim res For i = 1 To 6 res = res + Val(Me.Controls("TextBox" & i).Value) Next i TextBox7 = res End Sub Private Sub TextBox5_AfterUpdate() Dim i Dim res For i = 1 To 6 res = res + Val(Me.Controls("TextBox" & i).Value) Next i TextBox7 = res End Sub Private Sub TextBox6_AfterUpdate() Dim i Dim res For i = 1 To 6 res = res + Val(Me.Controls("TextBox" & i).Value) Next i TextBox7 = res End Sub -------------------------------------- #次の文字を書くテキストボックスの情報に加えてみましたが、 合計が狂ってうまくいきませんでした。 TextBox1.Text = Format(TextBox1.Value, "#,##0") TextBox7.Text = Format(TextBox7.Value, "#,##0")

  • エクセル2003のVBAで、ユーザーフォームにあるテキストボックスに入力制限をつけたいのですが

    エクセル2003のVBAで、ユーザーフォーム上にあるテキストボックスに入力制限をつけようとしています。 エクセルのセル13列目にdeg値 0 0.5 1 1.5 2 ・ ・ ・ があります。 ここにない値を入力するとエラーメッセージを表示させます。 下記のコードで、小数点を入力した瞬間(例えば「1.」)にエラーメッセージが表示されてしまいます。 どう修正したらよいか、どなたか分かりませんでしょうか? よろしくお願いいたします。 Private Sub TextBox21_Change() For i = 7 To 1446 If TextBox21.Value = ThisWorkbook.Sheets(\"default\").Cells(i, 13).Value Then Exit For Next i If i = 1447 Then MsgBox \"deg値と一致しません。補正値を入れなおしてください。\" TextBox21.Text = \"\" End If End Sub

  • エクセル ユーザーフォームでVLOOK

    ユーザーフォームのテキストボックスで、ご教示お願いいたします。 現在、以下のようなコードこちらで教えていただきセルに入力をしております。 テキストボックス5に値を入れ、 listのシートから該当する文字をテキストボックス6に表示させたいと思っております。 ■現在のコード '// Private Sub CommandButton1_Click() Dim LastRow As Long 'ここはキャメル形式やパスカル形式にします/大文字は定数です。 Dim i As Long '/テキストボックスに値があるか調べる For i = 1 To 7 Next i '/セルに書き込み With Worksheets("Sheet1") LastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 For i = 1 To 7 .Cells(LastRow, i).Value = Me.Controls("TextBox" & i).Value Next End With '/TextBox1-7をクリア If MsgBox("テキストボックスを空にしてよろしいですか?", vbQuestion + vbYesNo) = vbYes Then For i = 1 To 7 Me.Controls("TextBox" & i).Value = "" Next i End If 'TextBox1にフォーカスを移動 Me.TextBox1.SetFocus End Sub ■付け足したいコード Private Sub textbox5_change() Dim temp, x temp = Me.textBox5.Value If IsNumeric(temp) Then temp = Val(temp) x = Application.VLookUp(temp, Sheets("list").Range("a1:b20"), 2, False) If Not IsError(x) Then Me.TextBox6.Value = x Else MsgBox Me.TextBox5.Value & " はリストにありません" End If End Sub 【質問内容】 付け足したいコードは上記の通りですが、どのように付け足せばいいのかが分からず、 困っております。 度々で申し訳ありませんが、テキストボックス5の値を見て、 テキストボックス6に表示させるやり方をご教示お願いいたします。

  • Excel VBA 計算結果の表示方法

    ExcelのVBAでコマンドボタンを押すと以下のようなプログラムを考えています。 '変数宣言 Dim MIN As Integer Dim MAX As Integer Dim i As Integer MIN = CInt(TextBox1.Text) MAX = CInt(TextBox2.Text) 'ループ For i = MIN To MAX If i Like "*3" Or i Like "3*" Or i Mod 3 = 0 Then End If Next i と、ここまでは考えたのですが、結果の表示方法を一つのメッセージボックスで カンマ区切りで表示させる方法が調べてもわかりませんでした。 If i Like....の結果を一つにまとめてそれを表示するのかな。。。? なんて考えておるのですが、皆様のご教授を承りたく思います。 宜しくお願いします。 ※テキストボックス、コマンドボタンはユーザーフォーム上にあります。

  • VBAでのオブジェクト名の付け方で困っています。

    私が知りたいのはユーザフォームを一度作成した後にオブジェクトを追加したときのオブジェクト名の処理の仕方です。 今、EXCEL VBAでアンケート入力フォームを作成しています。テキストボックスやチェックボックスが全部で70ほどあります。以下のようにControlsコレクションを用いてユーザフォームに入力した文字列などをワークシートに追加しています。 ……<略> For i = 1 To 10 Cells(Row, i).Value = Me.Controls("CheckBox" & i ).Value Next i ……<略> しかし、入力フォームの画面構成を変更して、新たにテキストボックスやチェックボックスを追加すると、例えば、ユーザフォーム上で隣り合ったTextBox1とTextBox2の間にTextBox35が入ってきて以下のようにコードを書き換えねばなりません。 ……<略> Cells(Row, 1).Value = Me.CheckBox1.Value Cells(Row, 2).Value = Me.CheckBox35.Value For i = 2 To 10 Cells(Row, i+1).Value = Me.Controls("CheckBox" & i ).Value Next i ……<略> プロパティからオブジェクト名のひとつひとつを編集してユーザフォームのテキストボックスの表示順にするのも手間ですし……まだ、設計の試行錯誤の段階なのでまだまだテキストボックスやチェックボックスを追加・削除をすると思いますし…… 何か効率のよいオブジェクト名の付け方はないでしょうか? みなさんはどのようにされていますか?

  • エクセルVBAもし同じ値なら!!

    エクセルVBAもし同じ値なら!! 開いているBookのFormから違うBookのSheet1のA列にDATAを入力することはできます。 例)TextBox1の値があれば次の列に入れることはできます。 悩んでいるのは (1)TextBox1と違うBookの"Sheet1”のA列が同じ値なら  MsgBox "既に登録済みです。"と表示させて  ElseでDATAを入力させたいです。 '使用行を格納 lngYcnt_K = SH1.UsedRange.Rows.Count For lng = 1 To lngYcnt_K 'TextBox1と同じ値を見つけてテキストボックスの値を入力。 If CStr(TextBox1.Text) = CStr(SH1.Cells(lng, 1)) Then MsgBox "既に登録済みです。" Else 最終行 = SH1.Range("a65536").End(xlUp).Row TextBox1.Text = SH1.Cells(lng, 1) TextBox2.Text = SH1.Cells(lng, 2) End If Next lng どのようにすれば良いのでしょうか?? 教えて下さい!

このQ&Aのポイント
  • win11でメーラーとして使っていたoffice2019 outlookが使えず困っています。
  • ocnメールのカスタマーセンターに電話荷よるリモート操作でoffice2019のoutlookを使えるように設定しても、夜には設定が失われてしまいます。
  • win11で、win10上で使っていたoffice2019付属のoutlookをメーラーとして設定する方法をご存じの方にご助言をいただきたいです。
回答を見る

専門家に質問してみよう