1.VisualBasic for Applications Tool

  今回はVBAツール開発についてコードをTIPにしてご紹介していきます。皆さんは日常使用するExcelをどのように使用していますか?エクセルには関数の使用の他、簡易的なプログラムを組めるようにVBAコードをプログラムすることが可能です。私の場合は扱うデータ数が多くなってしまいフォームを使用した方が効率的に作業が進行する場合においてVBAを使用することが多く「仕入れ販売ツール」等で簡易的なツールとして活用しています。以下、ご紹介します。 vba.jpgvba2.jpg

2.VisualBasic for Applications Tips CODE

このページでは開発したプログラムコードをチップ化してご紹介しています。後ほどわかり易く分類化して整理する予定です。 (1)セルを参照する セルをまたはセル範囲を参照するには[Range("A1:A5")]を使用します。下のコードではワークシートの"sheet1"の R1のセルにUserForm1のprice.Textの値を代入するコードです。
    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