新規記事の投稿を行うことで、非表示にすることが可能です。
2016年09月30日
エクセル(Excel),技,VBA,メッセージボックス
マイクロソフトアクセスはこちら
【メッセージボックス】
IFの説明でも使用していますが、画面にメッセージボックスを表示させる命令です。
これも非常によく使用しますね。
例)
Sub sample1()
MsgBox "ようこそ"
End Sub
マクロを実行すると上図のようになります。
これは単に「メッセージボックス」を表示するだけです。
「OK」を押してもメッセージボックスが消えるだけです。
[構文]
MsgBox (Prompt [,Buttons][, Title][,helpfile,context] )
引数の[,Buttons][, Title][,helpfile,context]は省略できます。
引数のPromptにはメッセージとして表示する文字列を指定します。
また改行したい場合は改行コード(& vbCrLf &)を改行したい場所に挿入します。
例)
Sub sample()
Dim msg As String ‘変数msgの宣言
msg = "ようこそ!" & vbCrLf & "エクセルへ" ‘変数msgへメッセージを格納
MsgBox msg ‘メッセージに変数msgを表示
End Sub
上記のマクロを実行すると下記のように表示される。
人気ブログランキングへ
【メッセージボックス】
IFの説明でも使用していますが、画面にメッセージボックスを表示させる命令です。
これも非常によく使用しますね。
例)
Sub sample1()
MsgBox "ようこそ"
End Sub
マクロを実行すると上図のようになります。
これは単に「メッセージボックス」を表示するだけです。
「OK」を押してもメッセージボックスが消えるだけです。
[構文]
MsgBox (Prompt [,Buttons][, Title][,helpfile,context] )
引数の[,Buttons][, Title][,helpfile,context]は省略できます。
引数のPromptにはメッセージとして表示する文字列を指定します。
また改行したい場合は改行コード(& vbCrLf &)を改行したい場所に挿入します。
例)
Sub sample()
Dim msg As String ‘変数msgの宣言
msg = "ようこそ!" & vbCrLf & "エクセルへ" ‘変数msgへメッセージを格納
MsgBox msg ‘メッセージに変数msgを表示
End Sub
上記のマクロを実行すると下記のように表示される。
人気ブログランキングへ
タグ:メッセージボックス
2016年09月28日
エクセル(Excel),技,VBA,条件分岐
Microsoft Accessに関してはこちら
Select Case
複数の条件により分岐させたい場合に使用します。
【構文】
Select Case 変数
Case 値1
変数=値1の場合の処理
Case 値2
変数=値2の場合の処理
Case Else
変数が値1・値2に満たなかった場合の処理
End Select
上記のように変数が値1ならばその処理、そうでない場合は値2をみて値2ならばその処理、
そうでない場合は別の処理というように順番に見ていきます。その中で条件があった処理をする、
というものです。
条件に比較演算子を使用する場合は
Select Case 変数
Case Is 値1
変数=値1の場合の処理
Case Is 値2
変数=値2の場合の処理
Case Else
変数が値1・値2に満たなかった場合の処理
End Select
上記のように「Case Is」を使用します。
例)
Sub smple()
Dim m As Integer
m=InputBox(“数字を入力してください”)
Select Case m
Case 80 To 100
MsgBox”優です”
Case 70 To 79
MsgBox”良です”
Case 60 To 69
MsgBox”可です”
Case 0 To 59
MsgBox”不可です”
Case Else
MsgBox”数字は0〜100の数字で入力してください”
End Select
上記を実行した場合
上記のように数字を入力するボックス(インプットボックス)が表示され、
例えば「73」と入力して「OK」ボタンを押すと
上記のように「良です」というメッセージボックスが表示されます。
人気ブログランキングへ
Select Case
複数の条件により分岐させたい場合に使用します。
【構文】
Select Case 変数
Case 値1
変数=値1の場合の処理
Case 値2
変数=値2の場合の処理
Case Else
変数が値1・値2に満たなかった場合の処理
End Select
上記のように変数が値1ならばその処理、そうでない場合は値2をみて値2ならばその処理、
そうでない場合は別の処理というように順番に見ていきます。その中で条件があった処理をする、
というものです。
条件に比較演算子を使用する場合は
Select Case 変数
Case Is 値1
変数=値1の場合の処理
Case Is 値2
変数=値2の場合の処理
Case Else
変数が値1・値2に満たなかった場合の処理
End Select
上記のように「Case Is」を使用します。
例)
Sub smple()
Dim m As Integer
m=InputBox(“数字を入力してください”)
Select Case m
Case 80 To 100
MsgBox”優です”
Case 70 To 79
MsgBox”良です”
Case 60 To 69
MsgBox”可です”
Case 0 To 59
MsgBox”不可です”
Case Else
MsgBox”数字は0〜100の数字で入力してください”
End Select
上記を実行した場合
上記のように数字を入力するボックス(インプットボックス)が表示され、
例えば「73」と入力して「OK」ボタンを押すと
上記のように「良です」というメッセージボックスが表示されます。
人気ブログランキングへ
2016年09月26日
エクセル(Excel),技,VBA IF
Microsoft Accessに関してはこちら
【IF文】
個人的にVBAで最も使用するのがこのIF文です。
条件により処理を分岐させる場合に使用します。
[構文]
If 条件式1 Then
条件式1を満たした場合の処理
ElseIf
条件式2を満たした場合の処理
Else
条件式1・2を満たさなかった場合の処理
End If
例)
Sub smple()
Dim intScore As Integer
intScore = InputBox("得点を入力してください") ‘最初に得点を入力する入力ボックスを表示させる
If 79 < intScore And intScore <= 100 Then ‘入力された得点が79〜100の場合
MsgBox "優です" ‘メッセージボックスで「優」を表示
ElseIf 69 < intScore And intScore < 80 Then ‘入力された得点が69〜80の場合
MsgBox "良です" ‘メッセージボックスに「良」を表示
ElseIf 59 < intScore And intScore < 70 Then ‘入力された得点が59〜70の場合
MsgBox "可です" ‘メッセージボックスに「可」の表示
ElseIf 0 < intScore And intScore < 60 Then ‘入力された得点が59以下の場合
MsgBox "不可です" ‘メッセージボックスに「不可」の表示
Else ‘上記条件以外の場合
MsgBox "得点は 0〜100の数字で入力してください"
‘メッセージボックスに「得点は0〜100の数字で入力してくださいと表示
End If ‘If分の終了
End Sub
上記のマクロを実行すると最初に下のように「インプットボックス」が出現して入力を求められる
状態になります。ここで「得点」を記入して「OK」を押します。
仮に「60」を入力して「OK」を押すと下のような「可」ですというメッセージが表示されます。
このように条件により処理を変更することが出来ます。
「79」から「100」の場合は「優」
「69」から「80」の場合は「良」
「59」から「70」の場合は「可」
「59」以下の場合は「不可」と表示されます。
また上記以外の数字(例えば120とか)を入力された場合は「得点は0〜100の数字で
入力してください」というメッセージが出ます。
※条件式で使用される比較演算子一覧
・「=」・・・等しい
・「<」・・・○○より小さい
・「<=」・・・○○以下
・「>」・・・○○より大きい
・「>=」・・・○○以上
・「<>」・・・等しくない
個人的によく「End If」を忘れて警告が出ます。私だけですかね。(笑)
人気ブログランキングへ
【IF文】
個人的にVBAで最も使用するのがこのIF文です。
条件により処理を分岐させる場合に使用します。
[構文]
If 条件式1 Then
条件式1を満たした場合の処理
ElseIf
条件式2を満たした場合の処理
Else
条件式1・2を満たさなかった場合の処理
End If
例)
Sub smple()
Dim intScore As Integer
intScore = InputBox("得点を入力してください") ‘最初に得点を入力する入力ボックスを表示させる
If 79 < intScore And intScore <= 100 Then ‘入力された得点が79〜100の場合
MsgBox "優です" ‘メッセージボックスで「優」を表示
ElseIf 69 < intScore And intScore < 80 Then ‘入力された得点が69〜80の場合
MsgBox "良です" ‘メッセージボックスに「良」を表示
ElseIf 59 < intScore And intScore < 70 Then ‘入力された得点が59〜70の場合
MsgBox "可です" ‘メッセージボックスに「可」の表示
ElseIf 0 < intScore And intScore < 60 Then ‘入力された得点が59以下の場合
MsgBox "不可です" ‘メッセージボックスに「不可」の表示
Else ‘上記条件以外の場合
MsgBox "得点は 0〜100の数字で入力してください"
‘メッセージボックスに「得点は0〜100の数字で入力してくださいと表示
End If ‘If分の終了
End Sub
上記のマクロを実行すると最初に下のように「インプットボックス」が出現して入力を求められる
状態になります。ここで「得点」を記入して「OK」を押します。
仮に「60」を入力して「OK」を押すと下のような「可」ですというメッセージが表示されます。
このように条件により処理を変更することが出来ます。
「79」から「100」の場合は「優」
「69」から「80」の場合は「良」
「59」から「70」の場合は「可」
「59」以下の場合は「不可」と表示されます。
また上記以外の数字(例えば120とか)を入力された場合は「得点は0〜100の数字で
入力してください」というメッセージが出ます。
※条件式で使用される比較演算子一覧
・「=」・・・等しい
・「<」・・・○○より小さい
・「<=」・・・○○以下
・「>」・・・○○より大きい
・「>=」・・・○○以上
・「<>」・・・等しくない
個人的によく「End If」を忘れて警告が出ます。私だけですかね。(笑)
人気ブログランキングへ
タグ:VBA IF
2016年09月24日
エクセル(Excel),技,VBA Do Loop
Microsoft Accessに関してはこちら
Do Loop文
1、Do 〜 Loop
条件が満たされる限り、同じ処理を繰り返し、条件が満たされなくなったら
ループを抜けるという意味です。
For・・・Nextはループを回す回数が決まっている場合、Do 〜 Loopはループを
回す回数が不明の場合に使用する。
[構文1]条件が満たされる(真の場合)限り、同じ処理を繰り返し、条件が偽になったところでループ終了
Do While 条件式
条件式が真(True)の場合に実行する処理
Loop
[構文2]条件が満たされる(真の場合)限り、同じ処理を繰り返し、条件が偽になったところでループ終了
Do
条件式が真(True)の場合に実行する処理
Loop While 条件式
[構文3]条件が偽(False)である限り、同じ処理を繰り返し、条件が真になったところでループ終了
Do Until 条件式
条件式が偽(False)の場合に実行する処理
Loop
例1)Sub sample1()
Dim m as Integer '変数
m=1 ‘変数mに1を代入
Do Cells(m,1).Value=m ‘「セルA1(この場合)に変数m(この場合は1)
m=m+1 ‘変数mに+1する
Loop While m<5 ‘「mが5よりも小さいとき」という条件でループせよという命令
End Sub
例2)Sub sample1()
Dim m as Integer '変数
m=1 ‘変数mに1を代入
Do While m<5 ‘「mが5よりも小さいとき」という条件
Cells(m,1).Value=m ‘「セルA1(この場合)に変数m(この場合は1)
m=m+1 ‘変数mに+1する
Loop
End Sub
例1・例2いずれもマクロを実行すると下記の結果になります。
例3)
Sub sample1()
Dim m As Integer '変数
m = 1
Do Until m > 5 ‘mが5よりも大きくなるまでループする。
Cells(m, 1).Value = m ‘セル(m,1)この場合はA1に変数mを入れなさいという命令。
m = m + 1 ‘mに+1しなさいという命令
Loop
End Sub
上記のマクロを実行すると下記のようになります。
このように繰り返し処理はよく使用しますので覚えておくと便利です。
人気ブログランキングへ
Do Loop文
1、Do 〜 Loop
条件が満たされる限り、同じ処理を繰り返し、条件が満たされなくなったら
ループを抜けるという意味です。
For・・・Nextはループを回す回数が決まっている場合、Do 〜 Loopはループを
回す回数が不明の場合に使用する。
[構文1]条件が満たされる(真の場合)限り、同じ処理を繰り返し、条件が偽になったところでループ終了
Do While 条件式
条件式が真(True)の場合に実行する処理
Loop
[構文2]条件が満たされる(真の場合)限り、同じ処理を繰り返し、条件が偽になったところでループ終了
Do
条件式が真(True)の場合に実行する処理
Loop While 条件式
[構文3]条件が偽(False)である限り、同じ処理を繰り返し、条件が真になったところでループ終了
Do Until 条件式
条件式が偽(False)の場合に実行する処理
Loop
例1)Sub sample1()
Dim m as Integer '変数
m=1 ‘変数mに1を代入
Do Cells(m,1).Value=m ‘「セルA1(この場合)に変数m(この場合は1)
m=m+1 ‘変数mに+1する
Loop While m<5 ‘「mが5よりも小さいとき」という条件でループせよという命令
End Sub
例2)Sub sample1()
Dim m as Integer '変数
m=1 ‘変数mに1を代入
Do While m<5 ‘「mが5よりも小さいとき」という条件
Cells(m,1).Value=m ‘「セルA1(この場合)に変数m(この場合は1)
m=m+1 ‘変数mに+1する
Loop
End Sub
例1・例2いずれもマクロを実行すると下記の結果になります。
例3)
Sub sample1()
Dim m As Integer '変数
m = 1
Do Until m > 5 ‘mが5よりも大きくなるまでループする。
Cells(m, 1).Value = m ‘セル(m,1)この場合はA1に変数mを入れなさいという命令。
m = m + 1 ‘mに+1しなさいという命令
Loop
End Sub
上記のマクロを実行すると下記のようになります。
このように繰り返し処理はよく使用しますので覚えておくと便利です。
人気ブログランキングへ
タグ:Do Loop
2016年09月23日
エクセル(Excel),技,VBA For Next
Microsoft Accessに関してはこちら
【繰り返し】
一番多いのは作業の繰り返し(ループ)でしょう。
私がよく使用するのはデータベースがあって、ある条件で上から順番に検索していき、
条件があった行・セルを探してそれを処理する。という使い方が多いですね。
For・・・Next
処理を繰り返したい回数が決まっている場合は「For・・・Next」を使用します。
【構文】
For [変数]=[開始値] To [終了値] Step(増減値)・・・Stepは省略できます。
[処理]
Next [変数]
使用例)
Sub sample1()
Dim n As Integer 'ループ変数
Dim m As Integer '行の変数
m = 1
For n = 1 To 10
Sheet1.Cells(m, 1) = m
m = m + 1
Next n
End Sub
上記の内容ですが変数「n」はループの変数です。変数「m」は行の変数です。
m=1は最初に「m」という変数に「1」を設定します。
「For n = 1 To 10」はループ変数「n」は1〜10の間で設定しますという意味です。
「Sheet1.Cells(m, 1) = n」シート1のA1に変数m(ここでは「1」)を入力しなさいという意味です。
「m = m + 1」変数「m」にループごとに+1しなさいという意味です。
「Next n」ここで変数が+1されます。
次のループの時にmは「2」になり、A2に2が表示される。
上記のマクロを実行した結果として下記のようになります。
A列で1行目から順番に数字が入りました。
ループ回数を20回にすると20行目まで数字が入ります。
For・・・Nextはこのような使い方をします。ここではStepを使用しませんでしたが、
Stepで指定するとその指定分だけNext nが増減されます。
例)
Step 2とした場合は変数「n」が最初は「1」で次にループ時には+2されて「3」になるということです。
人気ブログランキングへ
HTMLとかよくわかんない…そんなあなたも簡単にブログが作れます!【JUGEM PLUS】
【繰り返し】
一番多いのは作業の繰り返し(ループ)でしょう。
私がよく使用するのはデータベースがあって、ある条件で上から順番に検索していき、
条件があった行・セルを探してそれを処理する。という使い方が多いですね。
For・・・Next
処理を繰り返したい回数が決まっている場合は「For・・・Next」を使用します。
【構文】
For [変数]=[開始値] To [終了値] Step(増減値)・・・Stepは省略できます。
[処理]
Next [変数]
使用例)
Sub sample1()
Dim n As Integer 'ループ変数
Dim m As Integer '行の変数
m = 1
For n = 1 To 10
Sheet1.Cells(m, 1) = m
m = m + 1
Next n
End Sub
上記の内容ですが変数「n」はループの変数です。変数「m」は行の変数です。
m=1は最初に「m」という変数に「1」を設定します。
「For n = 1 To 10」はループ変数「n」は1〜10の間で設定しますという意味です。
「Sheet1.Cells(m, 1) = n」シート1のA1に変数m(ここでは「1」)を入力しなさいという意味です。
「m = m + 1」変数「m」にループごとに+1しなさいという意味です。
「Next n」ここで変数が+1されます。
次のループの時にmは「2」になり、A2に2が表示される。
上記のマクロを実行した結果として下記のようになります。
A列で1行目から順番に数字が入りました。
ループ回数を20回にすると20行目まで数字が入ります。
For・・・Nextはこのような使い方をします。ここではStepを使用しませんでしたが、
Stepで指定するとその指定分だけNext nが増減されます。
例)
Step 2とした場合は変数「n」が最初は「1」で次にループ時には+2されて「3」になるということです。
人気ブログランキングへ
HTMLとかよくわかんない…そんなあなたも簡単にブログが作れます!【JUGEM PLUS】
2016年09月22日
エクセル(Excel)技,VBA,RangeとCells
Microsoft Accessに関してはこちら
・RangeとCells
セルを選択する場合RangeとCellsのどちらを使用すればいいのか。
Rangeを使用する時は
・固定位置のセルの場合
・セル範囲(複数セルの選択)の場合
上記以外は通常Cellsを使用します。
例)C5の場合
Range(“C5”)という表現になります。セル名は” ”で囲む。
Cells(5,3)という表現になります。Cellsは(行,列)になります。
範囲を選択する場合はRange(始点セル:終点セル)です。
複数行の場合はRange(Rows(1):Rows(5))で1行目から5行目が選択されます。
複数列の選択の場合はRange(Columns(1):Columns(3))で1列目(A列)から
3列目(C列)までが選択されます。
セルを変数で使用する場合はCells,Rows,Columnsを使用しましょう。
使用例
Range(“A5”).Select・・・A5セルが選択されます。
Cells(5,1).Select・・・A5セルが選択されます。
Cellsの場合変数も使用できます。
例)
Dim i as Long・・・「変数i」を宣言
i=5・・・「変数i」に5を格納
Cells(i,1).Select・・・A5セルを選択
・DeleteとClearContents
Deleteはセルごと削除して上に詰めます(詰める方向は指定出来ます)
ClearContentsはセルの中身を消去します。
例)
Range(“A1:B3”).Delete Shift := xlShiftUp・・・A1からB3まで削除して上に詰めます。
列削除の場合はRange(“B:B”).Delete・・・B列の削除
行削除の場合はRange(“2:2”).Delete・・・2行目の削除
Range(“A1:B3”). ClearContents・・・ClearContentsは単純にA1からB3の内容を消去します。
※オブジェクト・メソッド・プロパティの話
本来もっと早く説明しておく必要のある事柄だと思います。
「オブジェクト」とは「もの」「対象」「目的」という意味があります。
エクセルの場合、「ワークシート」「Range」等を差します。階層構造になっています。
「メソッド」というのは「命令」「操作」という意味で「オブジェクト」に対して命令することです。
「プロパティ」というのは「属性」という意味で「幅」「色」「高さ」などの事です。
上記のRange(“A1:B3”). ClearContentsは本来Sheet1.Range(“A1:B3”). ClearContents
と書くべきなのです。複数シートがある場合、どのシートなのか区別がつかないので
Sheet1というオブジェクトを指定する。Sheet1もRange(“A1:B3”)もオブジェクト、
ClearContentsがメソッド部分に当たります。
時々プログラムを書いていて「オブジェクトが見当たりません」等のエラーメッセージが
出る場合があります。そのようなときは「オブジェクト」を指定しているかどうか確認してください。
人気ブログランキングへ
・RangeとCells
セルを選択する場合RangeとCellsのどちらを使用すればいいのか。
Rangeを使用する時は
・固定位置のセルの場合
・セル範囲(複数セルの選択)の場合
上記以外は通常Cellsを使用します。
例)C5の場合
Range(“C5”)という表現になります。セル名は” ”で囲む。
Cells(5,3)という表現になります。Cellsは(行,列)になります。
範囲を選択する場合はRange(始点セル:終点セル)です。
複数行の場合はRange(Rows(1):Rows(5))で1行目から5行目が選択されます。
複数列の選択の場合はRange(Columns(1):Columns(3))で1列目(A列)から
3列目(C列)までが選択されます。
セルを変数で使用する場合はCells,Rows,Columnsを使用しましょう。
使用例
Range(“A5”).Select・・・A5セルが選択されます。
Cells(5,1).Select・・・A5セルが選択されます。
Cellsの場合変数も使用できます。
例)
Dim i as Long・・・「変数i」を宣言
i=5・・・「変数i」に5を格納
Cells(i,1).Select・・・A5セルを選択
・DeleteとClearContents
Deleteはセルごと削除して上に詰めます(詰める方向は指定出来ます)
ClearContentsはセルの中身を消去します。
例)
Range(“A1:B3”).Delete Shift := xlShiftUp・・・A1からB3まで削除して上に詰めます。
列削除の場合はRange(“B:B”).Delete・・・B列の削除
行削除の場合はRange(“2:2”).Delete・・・2行目の削除
Range(“A1:B3”). ClearContents・・・ClearContentsは単純にA1からB3の内容を消去します。
※オブジェクト・メソッド・プロパティの話
本来もっと早く説明しておく必要のある事柄だと思います。
「オブジェクト」とは「もの」「対象」「目的」という意味があります。
エクセルの場合、「ワークシート」「Range」等を差します。階層構造になっています。
「メソッド」というのは「命令」「操作」という意味で「オブジェクト」に対して命令することです。
「プロパティ」というのは「属性」という意味で「幅」「色」「高さ」などの事です。
上記のRange(“A1:B3”). ClearContentsは本来Sheet1.Range(“A1:B3”). ClearContents
と書くべきなのです。複数シートがある場合、どのシートなのか区別がつかないので
Sheet1というオブジェクトを指定する。Sheet1もRange(“A1:B3”)もオブジェクト、
ClearContentsがメソッド部分に当たります。
時々プログラムを書いていて「オブジェクトが見当たりません」等のエラーメッセージが
出る場合があります。そのようなときは「オブジェクト」を指定しているかどうか確認してください。
人気ブログランキングへ
タグ:RangeとCells
2016年09月21日
エクセル(Excel)技,VBA,変数
Microsoft Accessに関してはこちら
【変数の宣言】
VBAを使う上で最も大事なことの一つが「変数」の宣言です。
変数を使用するためには
・変数を宣言する
・変数にデータを入れる
・変数のデータを利用する
という3段階あります。
※変数は必ず宣言します。これは重要です。必ず宣言してください。
・「変数」とは何か。
「ユーザーが用意する入れ物」です。変数には色々なものが入れられます。
「数値」「文字列」「計算の途中の値」「論理値」「セルそのもの」「ワークシートそのもの」
変数名・・・英数字・漢字等使用できる。ただし先頭はアルファベットや漢字といった
文字列であることが必要。
例)
・変数1
・n
・NAME
・OLD等々
【宣言の方法】
書式:Dim 変数名 as データ型
例)Dim 変数1 as String
最後のStringが「データ型」になります。型を指定してない場合は、どのような型の値でも格納できますが、
予定と違った型を格納した場合にミスが発生しやすくなります。
そのためにも型を指定するようにします。
簡単に型の説明をしたいと思います。
・String・・・文字列型・・・・・・・文字列
・Boolean・・ブール型・・・・・・・TrueまたはFalse
・Byte・・・バイト型・・・・・・・0から255の正の整数
・Intege・・整数型・・・・・・・・-32,768から32,767の整数
・Long・・・長整数型・・・・・・・-2,147,483,648から2,147,483,647の整数
・Single・・単精度浮動小数点型・・-3.402823E38から-1.401298E-45(負の値)
1.401298E-45から3.402823E38(正の値)
・Double・・倍精度浮動小数点型・・-1.79769313486231E308から-4.94065645841247E-324
4.94065645841247E-324から1.79769313486232E308
・Currency・通貨型・・・・・・・-922,337,203,685,477.5808から
922,337,203,685,477.5807
・Date・・・日付型・・・・・・・西暦100年1月1日から西暦9999年12月31日
・Object・・オブジェクト型・・・オブジェクト参照するデータ型
・Variant・バリアント型・・・・あらゆる種類の値を保存できる型
少し練習してみましょう。
「開発」タブにて「Visual Basic」を開き、「挿入」ボタンから「標準モジュール」を選択してください。
ここの「Option Explicit」の下に
Sub Sample()
Dim tmp As Single
tmp = 10 / 4
MsgBox tmp
End Sub
と入力してください。(下記画面参照)
この状態で「マクロ実行」「Sample」を選択して実行すると下記画面のようにメッセージボックスが
出現して「2.5」と表示されます。
Sub Sample() ‘これはマクロの名前
Dim tmp As Single ‘ここが変数の宣言です。変数「tmp」は単精度浮動小数点型で宣言するという意味です。
tmp = 10 / 4 ‘ここは変数に値を格納しています。変数tmpに「10/4」を格納
MsgBox tmp ‘MsgBox(メッセージボックス)にtmpの内容を表示せよ
End Sub ‘マクロの終了
上記を見て頂ければ分かるように画面上に「2.5」と表示されたメッセージボックスが出現しております。
もし、この変数型が「Single」ではなく「Long」だったら表示は「2」になります。
「Long」は整数しか扱えないからです。
人気ブログランキングへ
タグ:変数
2016年09月20日
エクセル(Excel)技,VBA続き
【ボタンの作成】
「開発」タブの「挿入」というところをクリックすると上記の画面になります。
ここに「フォームコントロール」と「ActiveXコントロール」の2つがあります。
とりあえず今回は「ActiveXコントロール」を使用します。
上図の「ActiveXコントロール」の上段左にボタンのマークがあります。そこをクリックして
ワークシート上に適当に四角を書くと上図のようにボタンが作成できます。
その際リボンの「デザインモード」も自動的に押された状態になります。ボタン等を配置して
編集する場合は必ず「デザインモード」にしてください。
ボタン上で右クリックするとメニューが表示されるので「プロパティ」を選択します。
すると左のようなボタンのプロパティが表示されます。ここでボタンに関する様々なことが変更できます。
今回はとりあえずボタンの名前を変えてみましょう。
「Caption」という項目がボタンの名前になります。現在は「CommandButton1」になっています。
この「CommandButton1」の部分を「コピー」と変更してプロパティボックスを閉じてください。
上記のようにボタンの名前が「コピー」になりました。
このボタンにプログラムを書き込んで行きましょう。
このボタンをダブルクリックすると下記のようなVBA画面が表示されます。
Private Sub CommandButton1_Click()
End Sub
上記の内容は自動的に記載されます。この2行の間にプログラムを書いて行きます。
前回マクロの記録をしたと思います。その内容を書いてみましょう。
単純に下のように「Module1」の内容をコピーして(下の青の部分)貼り付けてみましょう。
本当は自分で書いた方が勉強になるので書いてみてはいかがでしょうか。
下記のようになりました。
これで「コピーボタン」にD2の内容をD3からD5へコピーせよという命令文が登録されました。
一度VBA画面を閉じて、デザインモードもOFFにしてワークシートのD3からD5を消去して
「コピー」ボタンを押してください。
無事にマクロ1の時と同じ動作をしましたか?
同じ動作をしたならば無事に登録されていることになります。
後はVBAのコマンドを覚えて様々なプログラムを書けるようになれば良いと思います。
「習うより慣れろ」ですね!
私も最初はこのようにマクロで登録したプログラムをコピーして使用していました。
今でもVBAを作成する場合は大いにこの方法を利用しています。
現在はコピーした後、一部を改変して、応用しながら使用しています。
人気ブログランキングへ
「開発」タブの「挿入」というところをクリックすると上記の画面になります。
ここに「フォームコントロール」と「ActiveXコントロール」の2つがあります。
とりあえず今回は「ActiveXコントロール」を使用します。
上図の「ActiveXコントロール」の上段左にボタンのマークがあります。そこをクリックして
ワークシート上に適当に四角を書くと上図のようにボタンが作成できます。
その際リボンの「デザインモード」も自動的に押された状態になります。ボタン等を配置して
編集する場合は必ず「デザインモード」にしてください。
ボタン上で右クリックするとメニューが表示されるので「プロパティ」を選択します。
すると左のようなボタンのプロパティが表示されます。ここでボタンに関する様々なことが変更できます。
今回はとりあえずボタンの名前を変えてみましょう。
「Caption」という項目がボタンの名前になります。現在は「CommandButton1」になっています。
この「CommandButton1」の部分を「コピー」と変更してプロパティボックスを閉じてください。
上記のようにボタンの名前が「コピー」になりました。
このボタンにプログラムを書き込んで行きましょう。
このボタンをダブルクリックすると下記のようなVBA画面が表示されます。
Private Sub CommandButton1_Click()
End Sub
上記の内容は自動的に記載されます。この2行の間にプログラムを書いて行きます。
前回マクロの記録をしたと思います。その内容を書いてみましょう。
単純に下のように「Module1」の内容をコピーして(下の青の部分)貼り付けてみましょう。
本当は自分で書いた方が勉強になるので書いてみてはいかがでしょうか。
下記のようになりました。
これで「コピーボタン」にD2の内容をD3からD5へコピーせよという命令文が登録されました。
一度VBA画面を閉じて、デザインモードもOFFにしてワークシートのD3からD5を消去して
「コピー」ボタンを押してください。
無事にマクロ1の時と同じ動作をしましたか?
同じ動作をしたならば無事に登録されていることになります。
後はVBAのコマンドを覚えて様々なプログラムを書けるようになれば良いと思います。
「習うより慣れろ」ですね!
私も最初はこのようにマクロで登録したプログラムをコピーして使用していました。
今でもVBAを作成する場合は大いにこの方法を利用しています。
現在はコピーした後、一部を改変して、応用しながら使用しています。
人気ブログランキングへ
タグ:VBA
2016年09月18日
エクセル(Excel)技,VBA
【Excel VBA(Visual Basic for Application)の話】
Excel VBA はMicrosoft Office Excel専用のマクロ言語です。
・「開発」タブの「Visual Basic」というボタンを押すと下のような画面が表示されます。
これがVBAの作成画面です。
前回「マクロ」のところで「マクロの記録」を行いました。
それが残っているという前提で話をしていきます。
右側のウィンドウの下の方に「+標準モジュール」というところがあります。
そこの「+」を押すと「Module1」というアイコンが表示されるのでそれをダブルクリックしてください。
下記の画面になると思います。
Sub Macro1()
'
' Macro1 Macro
'
'
Range("D2").Select
Selection.Copy
Range("D3:D5").Select
ActiveSheet.Paste
End Sub
上記がVBAで記述されたプログラムです。
簡単に説明しますと、最初の「Sub Macro1()」はマクロ名を表示しています。
これは前回記録したマクロ1の内容なので、名前が「Macro1」になっています。
次に「' Macro1 Macro」ここはコメント部分になります。
頭に「’」が付いている場合はプログラムではなくコメントとして扱われます。
この部分は緑色になっていると思います。このようにメモ感覚(覚書)で使用出来るので知っておくと便利です。
「Range("D2").Select」ここからがプログラムの本文でD2セルを選択しなさいという命令文です。
「Selection.Copy」選択したD2セルの内容をコピーしなさいという命令文です。
「Range("D3:D5").Select」D3からD5まで選択しなさいという命令文です。
「ActiveSheet.Paste」選択した範囲に貼り付けしなさいという命令文です。
このように見ていくとマクロ1の内容が明らかですね。D2をコピーしてD3からD5へ
貼り付けしなさいという指示ですね。
VBAというのはこのような指示をプログラムで作成することです。
人気ブログランキングへ
Excel VBA はMicrosoft Office Excel専用のマクロ言語です。
・「開発」タブの「Visual Basic」というボタンを押すと下のような画面が表示されます。
これがVBAの作成画面です。
前回「マクロ」のところで「マクロの記録」を行いました。
それが残っているという前提で話をしていきます。
右側のウィンドウの下の方に「+標準モジュール」というところがあります。
そこの「+」を押すと「Module1」というアイコンが表示されるのでそれをダブルクリックしてください。
下記の画面になると思います。
Sub Macro1()
'
' Macro1 Macro
'
'
Range("D2").Select
Selection.Copy
Range("D3:D5").Select
ActiveSheet.Paste
End Sub
上記がVBAで記述されたプログラムです。
簡単に説明しますと、最初の「Sub Macro1()」はマクロ名を表示しています。
これは前回記録したマクロ1の内容なので、名前が「Macro1」になっています。
次に「' Macro1 Macro」ここはコメント部分になります。
頭に「’」が付いている場合はプログラムではなくコメントとして扱われます。
この部分は緑色になっていると思います。このようにメモ感覚(覚書)で使用出来るので知っておくと便利です。
「Range("D2").Select」ここからがプログラムの本文でD2セルを選択しなさいという命令文です。
「Selection.Copy」選択したD2セルの内容をコピーしなさいという命令文です。
「Range("D3:D5").Select」D3からD5まで選択しなさいという命令文です。
「ActiveSheet.Paste」選択した範囲に貼り付けしなさいという命令文です。
このように見ていくとマクロ1の内容が明らかですね。D2をコピーしてD3からD5へ
貼り付けしなさいという指示ですね。
VBAというのはこのような指示をプログラムで作成することです。
人気ブログランキングへ
2016年09月17日
エクセル(Excel)技,マクロ
【マクロについて】
まだまだエクセルに関しての使用方法で解説できる部分はあるのですが一旦目線を変えます。
急にレベルが上がりますが、私が本当に利用したら便利と思っているのはこの「マクロ」と「VBA」です。
とりあえず「マクロ」から。
・「マクロ」とは
VBA(Microsoft Visual Basic for Applications)で作成したプログラムのことを言います。
ちなみにVBAとは「プログラミング言語」の事です。
エクセルではデータを修正したり、毎日・毎週・毎月決まったルーティンを繰り返す
必要があったりする場合があります。そのたびに同じ作業を行う。
これが自動化すれば便利ですね。それを実現するのがマクロです。
・「マクロの記録」
まずリボンで「開発」タブを開いてください。
注)ここに「開発」タブが無い場合は下記参照
上記のようにリボンの何もないところで右クリックし「リボンのユーザー設定」を開くと
上記のようなメニューが出ます。
右側の「リボンのユーザー設定」で「開発」にチェックを入れて「OK」ボタンを押してください。
そうすると「開発」タブが表示されます。
最初のマクロの記録に戻ります。
とりあえず何か記録してみましょう。(例としてC2の数式をC3からC5までコピーするとします)
1、リボンの「開発」タブ内「マクロの記録」を押す。
2、マクロの記録というダイヤログが開きます。ここでマクロに名前を付けられます。
デフォルトは「Macro1」ですがここに好きな名前を付けることが出来ます。
「ショートカットキー」というところは好きなキーを選択してショーカットキーを作成できます。
マクロの保存先で保存先の選択も可能です。しかし通常は「作業中のブック」になると思います。
上記の設定をしたらOKボタンを押してください。
3、この状態で実際にD2をコピーしてD3からD5まで貼り付けして「記録終了」ボタンを押します。
4、上記の操作で「Macro1」にD2をコピーしてD3からD5へ貼り付けるという一連の
作業手順が記録(保存)されたことになります。
5、マクロの実行
一度D3からD5を消去して「開発」タブの「マクロ」というボタンを押すと上記のようにマクロの
実行画面が表示されます。
複数のマクロを記録していた場合はここにすべて表示されます。
実行するマクロ(今回は「Macro1」)を選択して「実行」ボタンを押します。
するとD2をコピーしてD3からD5へ貼り付けるという一連の作業手順が再現されます。
これがマクロです。もっと複雑な作業でも記録できますのでチャレンジしてください。
人気ブログランキングへ
まだまだエクセルに関しての使用方法で解説できる部分はあるのですが一旦目線を変えます。
急にレベルが上がりますが、私が本当に利用したら便利と思っているのはこの「マクロ」と「VBA」です。
とりあえず「マクロ」から。
・「マクロ」とは
VBA(Microsoft Visual Basic for Applications)で作成したプログラムのことを言います。
ちなみにVBAとは「プログラミング言語」の事です。
エクセルではデータを修正したり、毎日・毎週・毎月決まったルーティンを繰り返す
必要があったりする場合があります。そのたびに同じ作業を行う。
これが自動化すれば便利ですね。それを実現するのがマクロです。
・「マクロの記録」
まずリボンで「開発」タブを開いてください。
注)ここに「開発」タブが無い場合は下記参照
上記のようにリボンの何もないところで右クリックし「リボンのユーザー設定」を開くと
上記のようなメニューが出ます。
右側の「リボンのユーザー設定」で「開発」にチェックを入れて「OK」ボタンを押してください。
そうすると「開発」タブが表示されます。
最初のマクロの記録に戻ります。
とりあえず何か記録してみましょう。(例としてC2の数式をC3からC5までコピーするとします)
1、リボンの「開発」タブ内「マクロの記録」を押す。
2、マクロの記録というダイヤログが開きます。ここでマクロに名前を付けられます。
デフォルトは「Macro1」ですがここに好きな名前を付けることが出来ます。
「ショートカットキー」というところは好きなキーを選択してショーカットキーを作成できます。
マクロの保存先で保存先の選択も可能です。しかし通常は「作業中のブック」になると思います。
上記の設定をしたらOKボタンを押してください。
3、この状態で実際にD2をコピーしてD3からD5まで貼り付けして「記録終了」ボタンを押します。
4、上記の操作で「Macro1」にD2をコピーしてD3からD5へ貼り付けるという一連の
作業手順が記録(保存)されたことになります。
5、マクロの実行
一度D3からD5を消去して「開発」タブの「マクロ」というボタンを押すと上記のようにマクロの
実行画面が表示されます。
複数のマクロを記録していた場合はここにすべて表示されます。
実行するマクロ(今回は「Macro1」)を選択して「実行」ボタンを押します。
するとD2をコピーしてD3からD5へ貼り付けるという一連の作業手順が再現されます。
これがマクロです。もっと複雑な作業でも記録できますのでチャレンジしてください。
人気ブログランキングへ
タグ:マクロ