VBAこれだけは覚えておきたい必須基本例文10
VBAを覚える順序としては、
・文法から始める方法
・実践例文から始める方法
どちらが良いとは言い切れませんが、もし文法習得に限界を感じているなら、
実践的な基本例文を暗記することから始めてみると良いでしょう。
また、
VBA習得において、
・何を目標にやっていけばよいのか
・どの程度出来たらVBAができると言えるのか
こんな疑問もでてくるでしょう。
基本例文を何度も読んで、何度も書いてみると、いつの間にかVBAが身近な言語となっているはずです。
細部について、あれこれこだわるより、何度も書いて動かしてみて下さい。
動かすときは、ステップイン(F8)で実行してください。
VBEの使い方:デバッグ|ExcelマクロVBA入門
それぞれに記載してある参考ページを読んで、細部の文法を学んでください。
1.最終行まで処理
Sub example1()
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(i, 3) = Cells(i, 1) + Cells(i, 2)
Next
End Sub
2行目からA列とB列にデータが入っています。
A列とB列を足して、C列に入れています。
これが、A列にデータが入っている最終行になります。
, 1)
この1がA列の指定なので、他の列の最終行の場合はこの数値を変更します。
2.後ろから逆順ループ
Sub example2()
Dim i As Long
Application.DisplayAlerts = False
For i = Worksheets.Count To 1 Step -1
If Worksheets(i).Name Like "削除*" Then
Worksheets(i).Delete
End If
Next
Application.DisplayAlerts = True
End Sub
「削除○○」のように削除で始まるシート名を削除します。
1番目のシートから削除していくと、削除した時点でシート数が変わってしまうので上手くいきません。
変数iがシートの数(Worksheets.Count )から1になるまで、1ずつ減らしていきます。
Application.DisplayAlertsをFalseにすることで、警告が出ないようにしています。
3.コレクション処理
Sub example3()
Dim ws As Worksheet
Application.DisplayAlerts = False
For Each ws In Worksheets
If ws.Name Like "削除*" Then
ws.Delete
End If
Next
Application.DisplayAlerts = True
End Sub
「削除○○」のように削除で始まるシート名を削除します。
全てのワークシートから、一つずつ変数wsに取り出します。
Application.DisplayAlertsをFalseにすることで、警告が出ないようにしています。
4.分岐処理
Sub example4()
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
'ElseIfで
If Cells(i, 1) >= 90 Then
Cells(i, 2) = "A"
ElseIf Cells(i, 1) >= 70 Then
Cells(i, 2) = "B"
ElseIf Cells(i, 1) >= 50 Then
Cells(i, 2) = "C"
Else
Cells(i, 2) = "D"
End If
'Select Caseで
Select Case Cells(i, 1)
Case Is >= 90
Cells(i, 2) = "A"
Case Is >= 70
Cells(i, 2) = "B"
Case Is >= 50
Cells(i, 2) = "C"
Case Else
Cells(i, 2) = "D"
End Select
Next
End Sub
2行目からA列にデータが入っています。
A列の数値によって、B列にABCDの判定を入れています。
ElseIfとSelect Caseで全く同じ処理となっています。
ワイルドカードを使った部分一致での条件判定もぜひ覚えてください。
第49回.Like演算子とワイルドカード
5.セルのコピー
Sub example5()
'セル全体をコピー
Range("A1").Copy Destination:=Range("B1")
'値だけのコピー
Range("B2:B10").Value = Range("A2:A10").Value
End Sub
A1セルを、B1セルにコピーします。
値だけでなく、書式等を含めたセルの情報の全てをコピーします。
この場合は、Valueを省略できません。
6.VBA関数とワークシート関数
Sub example6()
Dim i As Long
On Error Resume Next
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(i, 2) = Left(Cells(i, 1), 2)
Cells(i, 3) = WorksheetFunction.VLookup( _
Cells(i, 1), _
Worksheets("Sheet2").Range("A:B"), _
2, _
False)
Next
On Error GoTo 0
End Sub
2行目からA列にデータが入っています。
A列の値の1文字目を、B列に入れています。
A列の値でSheet2のA:B列のデータをVLOOKUPして、C列に入れています。
ワークシート関数で出来ることをVBAでゴリゴリ書いたりしないようにして下さい。
もちろん、同時にVBA関数を使える事は必須になります。
7.オブジェクト変数とWith
Sub example7()
Dim i As Long
Dim ws As Worksheet
Set ws = ActiveSheet
With ws
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
.Cells(i, 3) = .Cells(i, 1) + .Cells(i, 2)
Next
End With
End Sub
シートを指定しないRangeやCellsはアクティブシートとなってしまうので、
アクティブシート以外を操作する場合はシートを指定します。
しかし、シート指定は記述が長くなりがちなので、
オブジェクト変数を使って、シート指定を短い記述にすることが出来ます。
さらに、
Withを使う事で、まとめて一括でシートを指定してより簡単にシートを指定できるようになります。
8.ブックを開く・閉じる
Sub example8()
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks.Open("C:\user\sample.xlsx")
Set ws = wb.Worksheets(1)
ThisWorkbook.Worksheets(1).Range("A1") = ws.Range("A1")
wb.Close SaveChanges:=False
End Sub
ブックを開いて、先頭シートのA1セルの値を取得しています。
ブックのOpenと同時にオブジェクト変数に入れる事で、その後が記述しやすくなります。
9.ファイル一覧
Sub example9()
Dim i As Long
Dim sFile As String
i = 1
sFile = Dir("C:\sample\*.xls*")
Do While sFile <> ""
Cells(i, 1) = sFile
i = i + 1
sFile = Dir()
Loop
End Sub
Cドライブ下にある、sampleオォルダ内のexcelファイルの一覧を取得しています。
10.テキスト読み書き
Sub example10()
Dim InData As String
Open "C:\sample\sample1.txt" For Input As #1
Open "C:\sample\sample2.txt" For Output As #2
Do While Not EOF(1)
Line Input #1, InData
Print #2, InData
Loop
Close #1
Close #2
End Sub
"C:\sample\sample1.txt"を1行ずつ読み込んで、
同じ内容を、
"C:\sample\sample2.txt"に出力しています。
For OutputとPrint
これらをセットで使います。
Closeを忘れないようにしてください。
VBA必須基本例文10を覚えた後は
VBAを定型文で覚えよう
ここまでがしっかり覚えられれば、
その後は、使えるメソッドやプロパティを順に増やしていってください。
VBAの処理速度対策として、配列は必須技術になります。
同じテーマ「マクロVBA技術解説」の記事
フルパスをディレクトリ、ファイル名、拡張子に分ける
Colorプロパティの設定値一覧(カラー定数、XlRgbColor列挙)
VBAを定型文で覚えよう
VBAこれだけは覚えておきたい必須基本例文10
エクセルVBAでのシート指定方法
文字列結合&でコンパイルエラーになる理由
手動計算時の注意点と再計算方法
VBAの用語について:ステートメントとは
オブジェクト変数とは何か
VBAの小数以下の演算誤差について
スピルでVBAの何が変わったか
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
- ホーム
- マクロVBA応用編
- マクロVBA技術解説
- VBAこれだけは覚えておきたい必須基本例文10
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。