今回はVBAツール開発についてコードをTIPにしてご紹介していきます。皆さんは日常使用するExcelをどのように使用していますか?エクセルには関数の使用の他、簡易的なプログラムを組めるようにVBAコードをプログラムすることが可能です。私の場合は扱うデータ数が多くなってしまいフォームを使用した方が効率的に作業が進行する場合においてVBAを使用することが多く「仕入れ販売ツール」等で簡易的なツールとして活用しています。以下、ご紹介します。
Worksheets("sheet1").Range("R1").Value = UserForm1.price.Text(2)セル範囲を参照 下のコードではワークシートの"sheet1"のA1~F5のセルのフォントサイズを20に設定するコードです。
Private Sub CommandButton1_Click() Worksheets("sheet1").Range("A1:F5").Font.Size = 20 End Sub(3)メッセージボックスを表示 下のコードではメッセージボックスを表示させるコードです。 [MsgBox "メッセージ","vbOKonly/vbYesNo/vbOKcancel","Title","ヘルプファイル","context"]
MsgBox "情報を更新しました。", vbOKOnly, "UPDATE COMPLEATE"(4)他フォームを表示する 下のコードではuserForm2を表示させるコードです。
Private Sub CommandButton2_Click() UserForm2.Show End Sub(5)ワークシートをアクティブ 下のコードではワークシート"sheet1"をアクティブにしています。
Private Sub CommandButton4_Click() Worksheets("sheet1").Activate End Sub(6)If_then 下のコードではif thenの条件分岐の例です。[if 条件 then 処理1 else 処理2]の構文です。
If .Range("A1").value = UserForm1.Text1.Text = True Then MsgBox "A1の値は"& UserForm1.Text1.Text &"です", vbOKOnly, "A1の値" end if(7)select case 下のコードでは条件によって処理を分岐させる構文です。構文は次のとおりです。 Select case 条件判断対象 case 条件文1 処理1 case 条件文2 処理2 case 条件文3 処理3 end Select
Private Sub CommandButton1_Click() With Worksheets("sheet3") Select Case .Range("A1").Value Case Is >= 100 MsgBox "満点です。", vbOKOnly, "テスト結果" Case Is >= 90 MsgBox "優です。", vbOKOnly, "テスト結果" Case Is >= 70 MsgBox "良です。", vbOKOnly, "テスト結果" Case Is >= 60 MsgBox "良です。", vbOKOnly, "テスト結果" End Select End With End Sub(8)繰り返し処理for Next 文 下のコードでは繰り返し処理の例です。カラムAのセルに1ずつ加算して値を代入しています。 [For 条件文 Next]の構文です。
Private Sub CommandButton2_Click() Dim i As Integer For i = 1 To 50 Cells(i, 1).Value = i Next i End Sub(9)セルの値をコントロールフォームに読み込み セルの値をコントロールフォームに読み込む場合、[ControlSource]を使用します。下の例ではA1セルの値をUserForm1のIDのテキスト/ラベルに読みこんでいます。
UserForm1.ID.ControlSource = "A1"(10)メッセージボックスで分岐 下のコードではメッセージボックスの判断によって分岐処理をさせています。iを変数としてtest1.textとA[i]が同じ値であれば情報をフォームに読み込んでいます。
Private Sub CommandButton3_Click() Dim i As Integer Dim s As Integer Dim dialogresult As Integer With Worksheets("sheet1") For i = 1 To 200 If .Range("A" & i).Value = UserForm1.Text1.Text = True Then s = i dialogresult = MsgBox("製品メーカー:" & .Range("B" & s).Value & vbCrLf & "製品名:" & .Range("E" & s).Value & vbCrLf & "Statement:" & .Range("E" & s).Value & vbCrLf & vbCrLf & "情報照会を行いますか?", vbOKCancel, "情報照会") If dialogresult = vbOK Then 'Ⅰ製品情報入力' UserForm1.ID.ControlSource = "A" & s & "" UserForm1.maker.ControlSource = "B" & s & "" UserForm1.statement.ControlSource = "C" & s & "" UserForm1.category.ControlSource = "D" & s & "" UserForm1.product.ControlSource = "E" & s & "" UserForm1.links.ControlSource = "F" & s & "" UserForm1.condition.ControlSource = "G" & s & "" UserForm1.model.ControlSource = "H" & s & "" Else Exit Sub End If Exit For End If Next i If i = 200 Then MsgBox ("Data is Nothing") Exit Sub End If End With End Sub