Excel/VBA Tips

Engineering

ユーザーフォームからの入力

・ユーザーフォーム

Private Sub CommonButton1_Click()

UserForm1.Hide

End Sub

・標準モジュール

UserForm1.Show

Dim result As String

result = UserForm1.ComboBox1.Text

Unload UserForm1

MsgBox result

クラスモジュール内で配列を使う

クラス内で配列を使用する場合には、配列の宣言はPrivateで行う。

例:Private BoxNumberInSection(3,3) as Integer

Privateなので、配列の操作、参照は別のモジュールからはできない。

クラス内でPublicなメソッドを作り、そのメソッドを介して参照する形にするのがいい。

インスタンスが2次元の場合の呼び出し

呼び出し側:

Call Methd(Class)  ※()なし

呼び出される側:

Method(Class) ※()なし

Select Case 文

Select Case Number

Case 1

Case 2

End Select

Select Case Number

Case 1,2,3

Case 4,5,6

End Select

数値を文字列に変換する

Str(intCost)

MsgBox “商品の購入価格は”& intCost & “円です。”

文字列を置換(削除)する

例: 文字列から空白文字を削除する

MyStr = Replace (MyStr , ” ” , “”)

変換の型を調べる

Msgbox Vartype(変数)

文字列変数に文字を追加する

a = “A”

b = “B”

c = a & b

inStr関数を使って、複数の文字列を探索する

Sub macro1()

Dim String1 As String, String2 As String

String1 = “侍エンジニア塾侍エンジニア塾侍エンジニア塾”
String2 = “塾”

Dim i As Integer, msg As String

i = InStr(i + 1, String1, String2)

Do While i > 0

msg = msg & i & ","
i = InStr(i + 1, String1, String2)

Loop

MsgBox “「” & String2 & “」の位置は” & msg & “番目です。”

End Sub

Replace関数を使って特定の文字を削除(置換)する

m = Replace(String, “A”,””)

文字列変数から重複した文字を削除する

Sub DoubleDelete()

Dim String1 As String
Dim JustCounter As Integer
Dim NumberOfString As Integer

String1 = 457668

For JustCounter = 1 To 9

NumberOfString = Len(String1)

String1 = Replace(String1, JustCounter, "")


If Len(String1) = NumberOfString Then


Else

    String1 = String1 & JustCounter


End If

Next JustCounter

MsgBox String1

End Sub

1~9までで欠落している数字を特定する

Function FindLastOneNumber(IntegratedMatrix() As String, JustCounterRow As Integer, JustCounterColumn)

Dim JustCounter As Integer
Dim Dummy As Integer

FindLastOneNumber = Replace(IntegratedMatrix(JustCounterRow, JustCounterColumn), “-“, “”)

For JustCounter = 1 To 9

Dummy = Len(FindLastOneNumber)


If Len(Replace(FindLastOneNumber, JustCounter, "")) = Dummy Then

    FindLastOneNumber = JustCounter

    Exit For

End If

Next JustCounter

End Function

セルのエラーを無視する

Cells(Row , Column ).Errors.Item(xlNumberAsText).Ignore = True

With~End With

「With ~ End With」を使うことで、キーワードを記述する手間を省略することができます。

With ~ End With文の構文

With オブジェクトを取得するプロパティやメソッド

   .プロパティ = 設定する値

   .メソッド

End With

With ~ End With文の例文

With Range(“A1”).Font

   .Name = “游ゴシック”

   .Size = 14

   .Strikethrough = False

End With

With ~ End Withを使わずに書いた状態

Range(“A1”).Font.Name = “游ゴシック”

Range(“A1”).Font.Size = 14

Range(“A1”).Font.Strikethough = False

ファイルを閉じる際に停止させたくない場合

Application.DisplayAlerts = Fales

Workbooks(“Book1.xlsx”).Close

Application.DisplayAlerts = Ture

プロシージャの参照呼び出し

・クラスモジュール配列の参照呼出し

呼び出し側:

Call Method(Class())

呼び出される側:

Private Sub Method(ByRef Class() As ClassModule)

セルに書き込んだ文字列に色を付ける

Cells(##,##).Font.Color = RGB(Red,Green,Blue)

クラスモジュールの引数なしのMethodを呼び出す

呼び出し側:

Class.Method :かっこなし

呼び出される側:

Method()

文字列変数の左右から、文字を取り出す

例:

Dim str as String

str = “Hello VBA”

Msgbox Left(str,5)

この例では、Left関数を使って文字列の先頭から指定した5文字を抜き出しています。

コメント

タイトルとURLをコピーしました