• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロ_テキストボックスをシートに反映)

エクセルマクロ初心者のためのテキストボックス反映方法

このQ&Aのポイント
  • ユーザーフォームにリストボックスとテキストボックスを配置し、リストボックスで選択した管理番号の情報をSheet2に反映する方法を教えてください。
  • テキストボックス1に回答日を入力した場合、選択した管理番号の行の隣の列(B列)に記載されます。テキストボックス2に出荷予定日を入力した場合、選択した管理番号の行の隣の列(C列)に記載されます。テキストボックス3に数量を入力した場合、選択した管理番号の行の隣の列(C列)に記載されます。
  • offsetを使って上記の処理を行おうとしましたが、うまくいきませんでした。どなたか教えていただけないでしょうか?

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

> お手数ですが、テキストボックスで文字を反映させる関数も ちょっと意味が分かりかねますが、文字として判定したいと言うことでしょうか If VarType(TextBox4.Value) = vbString Then .Range("D" & lRow + 1).Value = TextBox4.Value End If か If Not IsNumeric(TextBox4.Value) Then .Range("E" & lRow + 1).Value = TextBox4.Value End If それか両方とも判定条件として If Not IsNumeric(TextBox4.Value) And VarType(TextBox4.Value) = vbString Then .Range("E" & lRow + 1).Value = TextBox4.Value End If とかでしょうか

kkk-z
質問者

お礼

ご丁寧な回答、本当にありがとうございました。 .Range("K" & lRow + 1).Value = TextBox4.Valueでできました。 助かりました。ありがとうございます。

その他の回答 (2)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

訂正 .Range("A" & lRow + 1).Value = ListBox1.List(1, 2) じゃなくて .Range("A" & lRow + 1).Value = ListBox1.List(ListBox1.ListIndex, 2) でした

kkk-z
質問者

補足

早急のご回答どうもありがとうございます。 テキストボックス4(コメント = 送り先一部変更あり) を追加したいと思い、IsDateなどにかわる文字関数があるか調べたのですが、どうしても応用がききませんでした。 お手数ですが、テキストボックスで文字を反映させる関数も教えていただきたく、よろしくお願いいたします。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

Private Sub CommandButton1_Click() Dim lRow As Long With Worksheets("Sheet2") lRow = .Range("A" & Rows.Count).End(xlUp).Row .Range("A" & lRow + 1).Value = ListBox1.List(1, 2) If IsDate(TextBox1.Value) Then .Range("B" & lRow + 1).Value = TextBox1.Value End If If IsDate(TextBox2.Value) Then .Range("C" & lRow + 1).Value = TextBox2.Value End If If IsNumeric(TextBox3.Value) Then .Range("D" & lRow + 1).Value = TextBox3.Value End If End With End Sub でいかがですか

関連するQ&A