大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、ユーザーフォームからデータベースの値を取得する方法と、データベースに値を入力する方法について、ご紹介します。ユーザーフォームをうまく使うと、入力作業を効率化することができます。ユーザーフォームを作成する方法をマスターしてきましょう。

はじめに

この記事では、ユーザーフォームからデータベースの値を取得する方法と、データベースへ入力する方法について、ご紹介します。

ユーザーフォームを使うと、入力作業を効率化することができます。

ユーザーフォームの使い方をマスターして、使いやすいユーザーフォームを作成していきましょう。

では、ユーザーフォームからデータベースの取得と入力について、解説していきます。

この記事を読むメリット

  • ユーザーフォームとデータベースを連携して、入力作業を効率化できます。

本記事の内容を動画でまとめています

目次から見たい項目へ移動すると便利ですよ。

目次

ユーザーフォームでデータベースの取得と入力をしたい

まずは、完成版のユーザーフォームからみていきます。

ユーザーフォームに次の機能を実装しています。

  • データベースの検索
  • データベースの値を取得
  • データベースの値を変更
  • データベースに値を新規登録
  • データベースの値を削除
  • ユーザーフォームの値をクリア

では、それぞれの機能をみていきます。

データベースの値を検索

データベースの値を検索する機能をみてみます。

ボタンをクリックで、ユーザーフォームを開きます。

ユーザーフォームを開く

ボタンをクリックで、ユーザーフォームを開きます

テキストボックスに、検索値を入力して、Enterを押します。

検索値を入力してEnter

テキストボックスに、検索値を入力して、Enterを押します

データベースから値を検索できます。

データベースから値を検索できた

データベースから値を検索できました

データベースから値を検索できました。

データベースの値を取得

次は、データベースの値を取得する機能をみてみます。

リストボックスの値を選択して、Enterを押します。

値を選択して、Enter

リストボックスの値を選択して、Enterを押します

データベースから値を取得できます。

データベースから値を取得できた

データベースから値を取得できました

データベースから値を取得できました。

データベースの値を変更

次は、データベースの値を変更する機能をみてみます。

値を変更して、変更のボタンをクリックします。

値を変更して、変更のボタンをクリック

価格の値を変更します。

価格の値を変更します

変更のボタンをクリックします。

変更のボタンをクリックします

これで、ユーザーフォームからデータベースの値を変更できます。

データベースの値を変更できた

ユーザーフォームからデータベースの値を変更できました

ユーザーフォームからデータベースの値を変更できました。

ユーザーフォームの値をクリア

ユーザーフォームの値をクリアする機能をみていきます。

クリアボタンをクリックします。

クリアのボタンをクリック

クリアボタンをクリックします

ユーザーフォームの値をクリアできます。

ユーザーフォームの値をクリアできた

ユーザーフォームの値をクリアできました

ユーザーフォームの値をクリアできました。

データベースに値を新規登録

データベースに値を新規登録する機能をみていきます。

値を入力して、新規登録のボタンをクリックします。

値を入力して、新規登録のボタンをクリック

テキストボックスに値を入力します。

テキストボックスに値を入力します

新規登録のボタンをクリックします。

新規登録のボタンをクリックします

これで、データベースに新規で登録して、ユーザーフォームの値はクリアできます。

データベースに新規で登録できた

データベースに新規で登録して、ユーザーフォームの値はクリアできました

データベースに新規で登録して、ユーザーフォームの値はクリアできました。

データベースの値を削除

データベースの値を削除する機能をみてみます。

値を取得して、削除のボタンをクリックします。

値を取得して、削除のボタンをクリック

データベースから値を取得しておきます。

データベースから値を取得しておきます

削除のボタンをクリックします。

削除のボタンをクリックします

データベースの値を削除できます。

データベースから値を削除できた

データベースの値を削除できました

データベースの値を削除できました。

VBAコードを作成する手順

VBAコードを作成する手順を見ていきます。

ユーザーフォームを作成

まずは、ユーザーフォームを作成します。

こんな感じで、ユーザーフォームを作成します。

ユーザーフォームを作成

ユーザーフォームを作成します

テキストボックスのオブジェクト名は、こんな感じです。

テキストボックスのオブジェクト名

テキストボックスのオブジェクト名は、こんな感じです

リストボックスのオブジェクト名は、こんな感じです。

リストボックスのオブジェクト名

リストボックスのオブジェクト名は、こんな感じです

ボタンのオブジェクト名は、こんな感じです。

ボタンのオブジェクト名

ボタンのオブジェクト名は、こんな感じです

という感じで、ユーザーフォームを作成しています。

では、それぞれの要素にVBAコードを登録していきます。

データベースの値を検索

データベースの値を検索するVBAコードを作成していきます。

データベースの値を検索

こちらのテキストボックスにVBAコードを登録します。

こちらのテキストボックスにVBAコードを登録します

登録するVBAコードは、次のようになります。

キーボードを入力したタイミングで実行する、「KeyDown」イベントを使います。

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  
  'Enterキー以外は、終了
  If KeyCode <> vbKeyReturn Then Exit Sub
  
  ListBox1.Clear 'リストボックスをクリア
  ListBox1.ColumnCount = 2 '2列にする
  For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
    '検索値を含む場合
    If InStr(Cells(i, "B"), TextBox1.Value) > 0 Then
      With ListBox1
        .AddItem "" '行を追加
        .List(.ListCount - 1, 0) = Cells(i, "A") 'Noを取得
        .List(.ListCount - 1, 1) = Cells(i, "B") '商品を取得
      End With
    End If
  Next
  
  '検索値が見つかった場合
  If ListBox1.ListCount > 0 Then
    ListBox1.SetFocus 'リストボックスをフォーカス
    ListBox1.ListIndex = 0 '0行目を選択
  '見つからなかった場合
  Else
    'テキストボックスをフォーカスしたままにする
    KeyCode = 0
  End If
  
End Sub

検索値を入力して、Enterを押します。

検索値を入力して、Enter

検索値を入力して、Enterを押します

データベースから値を検索できます。

データベースから値を検索できた

データベースから値を検索できました

データベースから値を検索できました。

データベースの値を取得

データベースの値を取得する機能を追加していきます。

データベースの値を取得

こちらのリストボックスにVBAコードを登録します。

こちらのリストボックスにVBAコードを登録します

登録するVBAコードです。

キーボードを入力したタイミングで実行する「KeyDown」イベントを使います。

Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  
  If KeyCode <> vbKeyReturn Then Exit Sub 'Enterキー以外は終了
  If ListBox1.ListIndex = -1 Then Exit Sub '選択されていない場合は終了
  
  Dim A
  With ListBox1
    '選択行のNoを取得
    A = Val(.List(.ListIndex, 0))
  End With
  
  For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
    'Noが一致した場合
    If Cells(i, "A") = A Then
      TextBox2.Value = A 'Noを取得
      TextBox3.Value = Cells(i, "B") '商品を取得
      TextBox4.Value = Cells(i, "C") '価格を取得
      TextBox5.Value = Cells(i, "D") '数量を取得
    End If
  Next
  
End Sub

リストボックスの値を選択して、Enterを押します。

値を選択して、Enter

リストボックスの値を選択して、Enterを押します

データベースから値を取得できます。

データベースから値を取得できた

データベースから値を取得できました

データベースから値を取得できました。

データベースの値を変更

データベースの値を変更する機能を追加していきます。

データベースの値を変更する

こちらのボタンにVBAコードを登録します。

こちらのボタンにVBAコードを登録します

登録するVBAコードは、こちらになります。

Private Sub CommandButton1_Click()
  
  For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
    '同じNoの場合
    If Cells(i, "A") = Val(TextBox2.Value) Then
      Cells(i, "B") = TextBox3.Value '商品を入力
      Cells(i, "C") = TextBox4.Value '価格を入力
      Cells(i, "D") = TextBox5.Value '数量を入力
    End If
  Next
  
End Sub

価格を変更して、変更ボタンをクリックしてみます。

価格を変更して、変更ボタンをクリック

価格の値を変更してみます。

価格の値を変更してみます

変更のボタンをクリックします。

変更のボタンをクリックします

これで、ユーザーフォームから、データベースの値を変更できます。

データベースの値を変更できた

ユーザーフォームから、データベースの値を変更できました

ユーザーフォームから、データベースの値を変更できました。

ユーザーフォームの値をクリア

ユーザーフォームの値をクリアする機能を追加していきます。

ユーザーフォームの値をクリア

こちらのボタンにVBAコードを登録します。

こちらのボタンにVBAコードを登録します

登録するVBAコードは次のようになります。

Private Sub CommandButton4_Click()
  
  'テキストボックスとリストボックスをクリア
  TextBox1.Value = ""
  TextBox2.Value = ""
  TextBox3.Value = ""
  TextBox4.Value = ""
  TextBox5.Value = ""
  ListBox1.Clear
  
End Sub

クリアボタンをクリックしてみます。

クリアボタンをクリック

クリアボタンをクリックします

ユーザーフォームの値をクリアできます。

ユーザーフォームの値をクリアできた

ユーザーフォームの値をクリアできました

ユーザーフォームの値をクリアできました。

データベースの値を新規登録

データベースの値を新規登録する機能を追加してみます。

データベースの値を新規登録

こちらのボタンにVBAコードを登録します。

こちらのボタンにVBAコードを登録します

登録するVBAコードは、次のようになります。

Private Sub CommandButton2_Click()
  
  '最終行
  With Cells(Rows.Count, "A").End(xlUp)
    .Offset(1, 0) = WorksheetFunction.Max(Range("A:A")) + 1 '新規でNoを入力
    .Offset(1, 1) = TextBox3.Value '商品を入力
    .Offset(1, 2) = TextBox4.Value '価格を入力
    .Offset(1, 3) = TextBox5.Value '数量を入力
  End With
  
  'テキストボックスとリストボックスはクリア
  TextBox1.Value = ""
  TextBox2.Value = ""
  TextBox3.Value = ""
  TextBox4.Value = ""
  TextBox5.Value = ""
  ListBox1.Clear
  
End Sub

値を入力して、新規登録のボタンをクリックします。

値を入力して、新規登録のボタンをクリック

テキストボックスに値を入力します。

テキストボックスに値を入力します

新規登録のボタンをクリックします。

新規登録のボタンをクリックします

データベースに新規で登録して、ユーザーフォームの値はクリアできます。

データベースに新規登録できた

データベースに新規で登録して、ユーザーフォームの値はクリアできました

データベースに新規で登録して、ユーザーフォームの値はクリアできました。

データベースの値を削除

データベースの値を削除する機能を追加していきます。

データベースの値を削除

こちらのボタンにVBAコードを登録します。

こちらのボタンにVBAコードを登録します

登録するVBAコードは、次のようになります。

Private Sub CommandButton3_Click()
    
  For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
    '同じNoの場合
    If Cells(i, "A") = Val(TextBox2.Value) Then
      Rows(i).Delete '行を削除
    End If
  Next
  
  'テキストボックスとリストボックスをクリア
  TextBox1.Value = ""
  TextBox2.Value = ""
  TextBox3.Value = ""
  TextBox4.Value = ""
  TextBox5.Value = ""
  ListBox1.Clear
  
End Sub

値を取得して、削除ボタンをクリックします。

値を取得して、削除ボタンをクリック

データベースから値を取得しておきます。

データベースから値を取得しておきます

削除のボタンをクリックします。

削除のボタンをクリックします

データベースから値を削除して、ユーザーフォームの値はクリアできます。

データベースの値を削除できた

データベースから値を削除して、ユーザーフォームの値はクリアできました

データベースから値を削除して、ユーザーフォームの値はクリアできました。

ユーザーフォームを開くボタンを追加

ユーザーフォームを開くボタンを追加していきます。

まずは、標準モジュールに次のVBAコードを入力しておきます。

Sub TEST()
  
  UserForm1.Show
  
End Sub

ボタンを追加してVBAコードを登録します。

ボタンを追加してVBAコードを登録

ボタンを追加します。

ボタンを追加します

ユーザーフォームを開くVBAコードを登録します。

ユーザーフォームを開くVBAコードを登録します

これで、ボタンをクリックして、ユーザーフォームを開けます。

ボタンクリックでユーザーフォームを開く

ボタンをクリックして、ユーザーフォームを開けました

ボタンをクリックして、ユーザーフォームを開けました。

こんな感じで、テキストボックスやリストボックス、そしてボタンに1つずつVBAコードを作成していくことで、ユーザーフォームとデータベースを連携することができます。

おわりに

この記事では、ユーザーフォームからデータベースの値を取得する方法と、データベースへ入力する方法について、ご紹介しました。

ユーザーフォームを使うと、入力作業を効率化することができます。

ユーザーフォームの使い方をマスターして、使いやすいユーザーフォームを作成していきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す