勝手に学んだVBAプログラミング
にゅうしゅつりょく
変数の定義
データ型:バイト型(Byte)、整数型(Integer)、長整数型(Long)、単精度浮動小数点型(Single)、二精度浮動小数点型(Double)、通貨型(Currency)、小数型(Decimal)、文字列型(String)、日付型(Date)、ブール型(Boolean)など
プログラムせいぎょ 1.条件判断をする: if Then Else(二重)if Then ElseIf(三重以上選択)select case....is.循環 をする
for....next
カスタム関数
モジュール-挿入-プロセス-関数(モジュールが1つの関数を挿入することに注意)1.f(x)=x^2+1を定義する
EXcelで直接スペース=fun(3)などのカスタム関数を呼び出すことができます(pythonと似ていますね)2.例:1-10の乱数を生成します
VBAの対象
アプリケーション:アプリケーションworkbook:ワークブックworksheet:ワークシートrange:セル.例:
コントロールの使用例
ソースファイルのダウンロード:従業員情報管理目標:従業員の番号または身分証明書に基づいて、小さな従業員情報検索器コードを作成します.
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)など
プログラムせいぎょ
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