本記事では「シート内の特定のレコードをフォームから変更する」という内容で書いていきます。
今回は下の表を使います。
また、フォームは下のようになっています。
※上のテキストボックスのオブジェクト名は「ラベル名+”_TextBox”」にしています。
ちなみに下の記事のテクニックと組み合わせると、さらにシート内のデータ操作がしやすくなるので合わせて読んでみてください。
【VBA】リストボックスで選択した値をテキストボックスに表示する
本記事では「フォーム上のリストボックスで選択したデータをテキストボックスに表示する」という内容で書いていきます。
今回は下のようなユーザーフォームを使っていきます。
※上のテキストボックスのオブジェクト名は「ラベ...
では、さっそく解説していきます。
シート内の特定のレコードをフォームから変更する
今回は「氏名」欄に入力されたシート内のレコードを編集できるようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Private Sub CommandButton1_Click() Dim columnNames() As Variant columnNames = Array("氏名", "年齢", "電話番号") Dim targetRow As Long targetRow = Sheets("Sheet1").Range("A1").CurrentRegion.Find(What:=氏名_TextBox, LookIn:=xlValues, LookAt:=xlWhole).Row Dim i As Long For i = LBound(columnNames) To UBound(columnNames) Sheets("Sheet1").Cells(targetRow, i + 1) = Controls(columnNames(i) & "_TextBox") Next End Sub |
4行目:配列にフォーム上のテキストボックスに関連するラベル名を格納。
6行目:フォームの氏名のテキストボックスに入力された『氏名』が対象シートの何行目にあるかを取得。※今回は『CurrentRegionプロパティ』と『Findメソッド』を使用。
9行目~11行目:シート上の対象氏名に関連するレコードにフォーム上のテキストボックスに入力された値を入れる。
実際に3行目の「鈴木次郎」のレコードの値を変更してみます。
フォーム上のテキストボックスに変更したい値を入力したのち、OKボタンをクリックします。
するとシート上の鈴木次郎関連の値も変更されています。
〇おすすめのVBA参考書ランキング!
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク