勝手に学んだVBAプログラミング


にゅうしゅつりょく
a = InputBox("what is your name :")
MsgBox ("my name is:") & a

変数の定義
dim a as string

データ型:バイト型(Byte)、整数型(Integer)、長整数型(Long)、単精度浮動小数点型(Single)、二精度浮動小数点型(Double)、通貨型(Currency)、小数型(Decimal)、文字列型(String)、日付型(Date)、ブール型(Boolean)など
プログラムせいぎょ
  • 1.条件判断をする:
  • if Then Else(二重)if Then ElseIf(三重以上選択)select case....is
    Public Sub mysub()
    x = InputBox("  x  :")
    Dim fx As Double
        If x <= 0 Then
            fx = x ^ 2
        ElseIf x <= 1 And x > 0 Then
            fx = x ^ 3
        ElseIf x > 1 Then
            fx = x ^ 4
        End If
    MsgBox fx
    End Sub
  • .循環
  • をする
    for....next
    Public Sub mysub()
    Dim i As Integer, xj As String
    For i = 2 To 17 Step 1
              Select Case Cells(i, "A")
              Case Is < 60
               xj = "   "
               Case Is >= 60
               xj = "  "
               End Select
               Cells(i, "B") = xj
    Next i

    カスタム関数
    モジュール-挿入-プロセス-関数(モジュールが1つの関数を挿入することに注意)1.f(x)=x^2+1を定義する
    Public Function fun(x)
    fun = x ^ 2 + 1
    End Function

    EXcelで直接スペース=fun(3)などのカスタム関数を呼び出すことができます(pythonと似ていますね)2.例:1-10の乱数を生成します
    Public Function fx()
    fx = Int(Rnd() * 10) + 1
    End Function

    VBAの対象
    アプリケーション:アプリケーションworkbook:ワークブックworksheet:ワークシートrange:セル.例:
    'A1    10,    
    Worksheets("sheet1").Range("A1").Value = 10
    'A2 A3 6
    Range("A2:A3") = 6
    '      []
    [B2] = 2
    [C2:C10] = 10
    '    
    Rows("4:5").Value = 100
    '    
    Columns("F:G").Value = 88
    '    
    Union(Range("D2"), Range("E4")) = 7

    コントロールの使用例
    ソースファイルのダウンロード:従業員情報管理目標:従業員の番号または身分証明書に基づいて、小さな従業員情報検索器コードを作成します.
    Option Explicit
    Dim nrow As Long                  '          ,               
    
    Private Sub CmdFind_Click()       '  “  ”       
        '           
        Dim col As Integer
        If FindName.Value = True Then
            col = 7                   '         ,    7 
        Else
            col = 1
        End If
        With Worksheets("    ")
            Dim rng As Range
            '            
            Set rng = .Columns(col).find(FindText.Value, lookat:=xlWhole)
            If Not rng Is Nothing Then           '              
                nrow = rng.Row                   '            
                Call findi                       '  findi   
            Else
                MsgBox "           !"
            End If
            FindText.Value = ""                  '           
        End With
    End Sub
    
    Private Sub CmdAdd_Click()          '  “  ”       
        '             
        If MsgBox("    “    ”          ?", vbQuestion + vbYesNo, "  ") = vbYes Then
             '         
            nrow = Worksheets("    ").Range("A1").Range("A1").CurrentRegion.Rows.Count + 1
            Call edit                   '  edit  
        End If
    End Sub
    
    Private Sub CmdDel_Click()        '  “  ”       
        '             
        If MsgBox("           “  ”     ?", vbQuestion + vbYesNo, "  ") = vbYes Then
            '    “    ”     
            nrow = Worksheets("    ").Range("A1:A65536").find(Range("C7").Value, lookat:=xlWhole).Row
            '      “  ”    
            Worksheets("    ").Rows(nrow).Copy Worksheets("  ").Range("A65536").End(xlUp).Offset(1, 0)
            '      
            Worksheets("    ").Cells(nrow, "A").EntireRow.Delete
        End If
    End Sub
    
    Private Sub CmdEdit_Click()     '  “  ”       
        '             
        If MsgBox("    “    ”        ?", vbQuestion + vbYesNo, "  ") = vbYes Then
            '    “    ”     
            nrow = Worksheets("    ").Range("A1:A65536").find(Range("C7").Value, lookat:=xlWhole).Row
            Call edit               '  edit  
        End If
    End Sub
    
    Private Sub CmdFirst_Click()   '  “   ”       
        nrow = 2                   '    2
        Call findi                 '  findi  
    End Sub
    
    Private Sub CmdEnd_Click()  '  “    ”       
            '           
            nrow = Worksheets("    ").Range("A1").CurrentRegion.Rows.Count
            Call findi            '  findi  
    End Sub
    
    Private Sub CmdFormer_Click()    '  “   ”       
       '    “    ”         
       nrow = Worksheets("    ").Range("A2:A65536").find(Range("C7").Value, lookat:=xlWhole).Row - 1
       Call findi                '  findi  
    End Sub
    
    Private Sub CmdNext_Click()     '  “   ”       
        '    “    ”         
        nrow = Worksheets("    ").Range("A1:A65536").find(Range("C7").Value, lookat:=xlWhole).Row + 1
        Call findi    '  findi  
    End Sub
    
    
    Sub findi()      '   
    ' “    ” nrow      “  ”  
        With Worksheets("    ")
            Range("C7:E7").Value = .Range(.Cells(nrow, 1), .Cells(nrow, 3)).Value
            Range("C10:E10").Value = .Range(.Cells(nrow, 4), .Cells(nrow, 6)).Value
            Range("C13").Value = .Cells(nrow, 7).Value
            Range("E13").Value = .Cells(nrow, 8).Value
            Range("C16:E16").Value = .Range(.Cells(nrow, 9), .Cells(nrow, 11)).Value
            Range("C19").Value = .Cells(nrow, 12).Value
        End With
    End Sub
    
    Sub edit()    '   
       '           nrow  
       With Worksheets("    ")
           .Cells(nrow, "A").Resize(1, 3) = Range("C7:E7").Value
           .Cells(nrow, "D").Resize(1, 3) = Range("C10:E10").Value
           .Cells(nrow, 7).Value = Range("C13").Value
           .Cells(nrow, 8).Value = Range("E13").Value
           .Cells(nrow, 9).Resize(1, 3).Value = Range("C16:E16").Value
           .Cells(nrow, 12).Value = Range("C19").Value
      End With
    End Sub