Excel VBA コマンドボタンからセルへ入力

このQ&Aのポイント
  • Excel VBAを使用してコマンドボタンからセルへの入力を行いたいと思います。具体的には、フォームを使用して学年、クラス、物品名、個数を入力し、確定ボタンを押すと、それぞれの値が指定されたセルに自動的に入力されるようにしたいです。また、返却期限については、入力された日付から1週間後の日付が自動的に入力されるようになっていると便利です。
  • ExcelのVBAを使って、コマンドボタンからセルへの入力を簡単にする方法を知りたいです。具体的には、学年、クラス、物品名、個数などをフォームで入力し、確定ボタンを押すと、それぞれの値が指定されたセルに入力されるようになっていると便利です。また、入力された日付から1週間後の日付を自動的に入力できるようにしたいです。
  • Excel VBAを使って、コマンドボタンからセルへの入力を効率化したいと思います。具体的には、フォームを使用して学年、クラス、物品名、個数を入力し、確定ボタンを押すと、それぞれの値が指定されたセルに自動的に入力されるようにしたいです。さらに、入力された日付から1週間後の日付を自動的に入力できるようにする方法も知りたいです。
回答を見る
  • ベストアンサー

Excel VBA コマンドボタンからセルへ入力

下記のような表で、画像にあるVBAのExcelフォームを使い、入力効率を上げたいなと思いました。 たたVBAの知識がほぼないため、皆様のお力をお借りしたいと思いました。 処理としては ・学年 の欄にはテキストボックスに数字を入力、クラスはコンボボックスから選択、物品名はテキストボックスに入力、個数はコンボボックスから選択 します ・確定ボタンをクリックしたとき、学年は C4セル、クラスはD4セル、物品名は… と自動的にフォームの値を入力 ・確定ボタンを押して、セルへ入力されると同時にフォームに入力してある値をクリア ・確定ボタンを押して記入し、次の値をフォームに入力して確定ボタンをおした時は、自動的に1行ずつ下に入力される ・返却期限については、日付欄に入力されている日付の一週間後の日付を自動で記入されるようにしたいです また、日付の欄は自動的に入力された時点の日付を記録したいです。 ※テキストボックスなどは、種類ごとに左から123となるようにします コードを記載していただければ1番嬉しいのですが、 お忙しいとは思いますので、もしもそれが難しければ 処理に必要なコードの解説が載っている解説ページなどをそれぞれ貼り付けて頂いても大丈夫です。 どうかよろしくお願い致します

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.3

次のようなコードでいかがでしょうか。 フォームの名前、各コンポーネントの名前は ソースコードから判断(読み取って)設定してください。 不明なら聞いてください。 また、セットする値が日付なのか、日時なのか不明なので Int(Now) としました、 必要に応じて Now あるいは、date に変更してください。 Option Explicit Private Sub UserForm_Initialize()  Me.ClassLBox.Clear  Me.KosuuLBox.Clear  Me.ClassLBox.AddItem "キリン組"  Me.ClassLBox.AddItem "パンダ組"  Me.ClassLBox.AddItem "バンビ組"  Me.KosuuLBox.AddItem "1"  Me.KosuuLBox.AddItem "2"  Me.KosuuLBox.AddItem "3"  Me.KosuuLBox.AddItem "4"  Me.ClassLBox.ListIndex = -1  Me.KosuuLBox.ListIndex = -1 End Sub Private Sub GoPut_Click()  Dim MyRange As Range    With ThisWorkbook.Sheets(1)      Set MyRange = .Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)      MyRange.Offset(0, 0).Value = Int(Now)   MyRange.Offset(0, 1).Value = Me.GakunenEBox.Text   MyRange.Offset(0, 2).Value = Me.ClassLBox.Text   MyRange.Offset(0, 3).Value = Me.BuppinEBox.Text   MyRange.Offset(0, 4).Value = Me.KosuuLBox.ListIndex   MyRange.Offset(0, 5).Value = Int(Now) + 7     Me.GakunenEBox.Text = ""   Me.ClassLBox.ListIndex = -1   Me.BuppinEBox.Text = ""   Me.KosuuLBox.ListIndex = -1    End With End Sub Private Sub Cancel_Click()  Me.Hide End Sub

lapis0311
質問者

お礼

回答ありがとうございます! コードを入れたところ、無事上手く動いてくれました! 学校の教師に提案してみたところあんが採用されました(笑) 本当に助かりました!m(_ _)m

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率65% (1614/2452)
回答No.4

No1の訂正です 全てのCellsの前にドット「.」を入れてください。

lapis0311
質問者

お礼

回答ありがとうございます!

  • kkkkkm
  • ベストアンサー率65% (1614/2452)
回答No.2

確定を押した後に学年のところにカーソルが行くようにNo1のコードの最後に以下を追加してください。TextBox1は学年のテキストボックスの名前で。 Me.TextBox1.SetFocus

lapis0311
質問者

お礼

回答ありがとうございます!

  • kkkkkm
  • ベストアンサー率65% (1614/2452)
回答No.1

確定ボタンをクリックしたときのコードに Sheet1は実際のシート名に TextBox1からTextBox4までは実際のフォームのテキストボックス及びコンボボックスの名前に変更して記載してください。 Dim LastRow As Long With Sheets("Sheet1") LastRow = Cells(Rows.Count, "B").End(xlUp).Row + 1 Cells(LastRow, "B").Value = Date Cells(LastRow, "C").Value = Me.TextBox1.Value Me.TextBox1.Value = "" Cells(LastRow, "D").Value = Me.TextBox2.Value Me.TextBox2.Value = "" Cells(LastRow, "E").Value = Me.TextBox3.Value Me.TextBox3.Value = "" Cells(LastRow, "F").Value = Me.TextBox4.Value Me.TextBox4.Value = "" Cells(LastRow, "G").Value = Date + 7 End With

lapis0311
質問者

お礼

回答ありがとうございます! 訂正も確認しつつ、試してみたのですが残念ながら上手く行きませんでした。 もう少し試行錯誤してみようと思います

関連するQ&A

  • エクセル VBA 日付入力?

    エクセル 2000のVBAにて簡単な 日程表を作成しています。 フォームの テキストボックス1に 10/8 を入力したら テキストボックス2には 10/15 ~ テキストボックス15には 1/21 が自動で 入力されるようにするには、どのようにすればよろしいでしょうか?

  • VBAユーザーフォームで

     エクセルVBAでユーザーフォームより、テキストボックスで入力させたものをセルに表示させようとしています。  テキストボックスは1と2があり、テキストボックス1で入力した値の最初の5文字+固定値をテキストボックス2に自動で入力(表示)したいのですがなかなかうまくいきません。(自動入力後、手動で一部修正します。)  VBAをはじめたばかりの初心者ですが、どうぞよろしくお願いします。

  • エクセルVBAについて質問です。

    エクセルVBAについて質問です。 シート1のユーザーフォームにコンボボックスとテキストボックスが各1つずつ、 シート2のA列には1行目から順に「あ」「い」「う」と文字が入っていて、B列には「1」「2」「3」と値が入っています。 コンボボックスのリストにはシート2のA列の文字が選択できる状態にあります。 この状態で、例えばコンボボックスで「い」を選んだら、テキストボックスに自動的に「2」と入る、というように、コンボボックスのリストの中から任意の文字を選択したときに、テキストボックスにB列の値が入るようにするにはどのようにすればいいのでしょうか?よろしくお願いします。

  • エクセルVBAマクロで、一度テキストポックスに入力した値がコピーされて

    エクセルVBAマクロで、一度テキストポックスに入力した値がコピーされてしまう VBAマクロ初心者です。 エクセルVBAマクロで、以下の様なプログラムを作成し計算させていますが、 一度入力した値がテキストポックスに残ってしまい、なんとかならないかなと 思っています。 (1)複数シートにそれぞれコマンドボタンを配置し、クリックすると同じユーザー フォームが立ち上がるようになっています。 (2)そのユーザーフォーム内に、テキストボックスが複数あり、それぞれ値を入力 して計算スタートさせると、ワークシートの1行目から数千行目まで計算して 各行に計算結果を表示します。 (計算は、既に各行に入力済みのデータとこのテキストボックスの値を元に算出されます) (3)次に、別のシートでコマンドボタンをクリックし、ユーザーフォームを立ち上げると、 前のシートで入力した値がそのまま各テキストボックスに入ってしまいます。 (これは、必ず起こる訳ではなく、時々起こるのですが、起こる場合は、コマンドボタン をクリックしてからユーザーフォームが立ち上がるまでの時間が若干短い感じがします) ※一度、上記の計算をさせるとテキストボックスの値がそのシートの特定のセルに入り、 次回ユーザーフォームを立ち上げた際に、テキストボックスに入るようになっています。 (Private Sub UserForm Initialize を使っています) パソコンの構造を、私はよく知らないのですが、おそらく、一度テキストボックスに値 を入力して計算させると、どこかのメモリにそれが残っていて、次にユーザーフォーム を立ち上げた際にそれが入ってしまうのかな、と思っています。 (ただし、もし前の値が入ってしまったとしても、一度そのユーザーフォームを消して から、再度立ち上げると、正常な値(そのシートの特定のセルを参照)が必ず入ります) 何か、プログラムにより、このメモリ?を消す?、あるいはうまく解決する方法など 考えられませんでしょうか? もし、詳しい方がおられましたら、御教示いただけませんでしょうか。 よろしくお願いいたします。

  • 検索したい値を入力すると自動で一致するセルにジャンプする方法はありますでしょうか

    ユーザーフォームでテキストボックスを作成し、 そこにNo.(値)を入力すると 値が一致するセルにジャンプする方法があれば教えて下さい。 実は、検索したいだけなのですが 部署内の沢山の人が使うデータなので 操作しやすくしたいと思っております ユーザーフォームには、 No.を入力する用のテキストボックスと、 ”検索”と入力したボタンを設置して ボタンを押すと自動で一致するセルにジャンプ してほしいです どなたか教えていただけないでしょうか よろしくおねがいいたします。

  • EXCEL VBA セルに既に入力されている文字に文字を追加する

    EXCELでマクロを作成しています ユーザーフォームを使用し、コンボボックスでセルを選択し、その選択したセルにテキストボックスから文字を入力できるようになっています。 選択したセルが空白ならそのままテキストボックスの文字を挿入し、 もし選択したセルにすでに文字が入力されている場合は、すでに入力されている文字+テキストボックスの文字、という風にしたいと思っています。 例:選択したセル  「ガソリン代」   テキストボックス「高速代」   → 『ガソリン代高速代』  その次も同じセルを選択した場合     テキストボックス「電車代」   → 『ガソリン代高速代電車代』 このような感じです。 文字をどこかに代入してテキストボックスの文字と&で結んで入れてやれば良いのかもしれませんがつまづいております。 ぜひ助けていただければうれしく思います よろしくお願いします。

  • エクセルVBAのオプションボタンがうまくいきません 

    エクセルのVBAでフォームをつくり 3つのオプションボタンを配置し チェックした項目のとき、指定したセルに「レ」の印を書き込ませたいのですが、うまくいきません。 同じフォーム内のテキストボックスやコンボボックスの内容はうまくセルに書き込めるのですが・・・ オプションボタンのグループは設定してあります。 下のように記述したのですが、なぜ思うように動作しないか教えてください。 If オプション(3) = True Then ActiveCell.Value = "レ" ElseIf オプション(1) = True Then Range("H21").Value = "レ" ElseIf オプション(2) = True Then Range("H23").Value = "レ" End If

  • フォームボタン値をセルに連続入力

    フォームボタンの値をクリックするたびにExcelセルに連続入力又、セル範囲を左クリックで示した後、ボタンクリックで範囲内に値が入力したいのですがVBAコードなどどなたか解る方よろしくお願いします。

  • VBA 任意のセルにデータを転記する方法

    Excel のユーザーフォームを使って、データの入力をしたいと考えています。 入力ボタンを押すと、テキストボックスに入力した内容が別シートのセルに転記されるものです。 指定したセルに追加する、1番下の行に追加する、はできるのですが、コンボボックスに入力した内容によって転記するセルを変える方法はありますでしょうか? 具体的に言うと、 ユーザーフォーム内のコンボボックスで 月(4月~3月)を選べるようにしているのですが 4月を選べば4月を入力するセルに。7月を選べば7月を入力するセルに転記したいです。 何かいい方法はありますでしょうか。

  • コンボボックスの自動更新について

    コンボボックスの自動更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中には「入力」ボタンとコンボボックスと テキストボックスがあります。 コンボボックスは、「ABCDEF」と6つのリストがあります。 ユーザーフォーム起動時には、コンボボックスは空欄で コンボボックスから、入力したい商品を選んで、入力ボタンを押して コンボボックスとテキストボックスの内容を入力・コンボボックスを 空欄に戻しています。 これを、「A」を選んで入力ボタンをおしたら「B」が選ばれる。 「B」を選んで入力ボタンをおしたら「C」が選ばれるといったように コンボボックスに表示されるリストを自動で更新することは できないでしょうか? Select case などを利用して組み立てようとしたのですが、 数時間以上調べても出来ません。 教えていただけると助かります。

専門家に質問してみよう