こんにちは! 健史です。
Excel-VBAのプログラムを作成する上で、いくつかのコマンドをノートに書き記し"いつでも見られるように"してあります。
理由は、プログラムの作成頻度は低く時々であるために、しかし作成するときに比較的頻繁に使うコマンドであるものの、覚えきれなかったり忘れてしまうものがあるからです。
更に自分のPC以外で作業することがあり、そんなとき迅速に対応したいため普段から持参しています。
よく使うコマンド集
分岐と改行:If,Selectなど
If i <> 0 and _ j > 0 Then MsgBox "TEST" End If Select Case strName Case "りんご" MsgBox "Apple" Case Else MsgBox "???" End Select Select Case inPoint Case Is >= 80 MsgBox "80イジョウ" Case Else MsgBox "???" End Select Select Case inPoint Case 80 To 100 MsgBox "80~100" Case Else MsgBox "???" End Select
ループ:For,Whileなど
Dim ix1 As Long For ix1 = 1 To 10 Next ix1 = 1 Do While ix1 < 11 'または Do Until ix1 > 10 ix1 = ix1 + 1 Loop ix1 = 1 Do ix1 = ix1 + 1 Loop While ix1 < 11 'または Do Until ix1 > 10
セルの最大有効値検索:xlDownなど
Dim ix1_max As Long ix1_max = Worksheets(1).Range("A1").End(xlDown).Row Dim iy1_max As Long iy1_max = Sheets(1).Range("A1").End(xlToRight).Column
複数のファイルを扱う、ファイルの保存やクローズ
'定義 Dim excel0, excel1, excel2 As Workbook 'マクロ自身をexcel0にセット・・・(項目定義後の)処理の最初に記述 Set excel0 = ActiveWorkbook '入力ファイルや参照ファイルをオープンと当時にexcel1にセットする場合 'strPath1には[C:\temp01\file01.xlsx]などのファイル名がセットされている Set excel1 = Workbooks.Open(strPath1) '新規にファイルを開くと同時にexcel2へセットする場合 Set excel2 = Workbooks.Add '新規に開いたファイルの保存 'strPath2には[C:\temp01\file02.xlsx]などのファイル名がセットされている excel2.SaveAs strPath2 excel0.Save excel0.Close '参照は、先頭にワークブック名を付けるだけ If excel0.Sheets(1).Cells(1,2) = "" Then
ブックやシートをアクティブ:Activate
Workbooks("Book2.xlsx").Activate Worksheets("Sheet2").Activate Workbooks("Book2.xlsx").Sheets("Sheet2").Activate
シート全体、行、列のクリア:Clear
Sheets(2).Cells.Clear 'シート2全体 Sheets(2).Rows(2).Cells.Clear 'シート2の2行目 Sheets(2).Columns(5).Cells.Clear 'シート2の5列目(E列)
・Clear:全て
・ClearFormats:書式
・ClearContents:数式、文字列
・ClearComments:コメント文
・ClearOutline:アウトライン
フォルダからファイル名を取得
Const cnsDIR = "\*.*" Dim strPath As String Dim strFilename As String strPath = "c:\temp1" '最初のファイル名を取得 strFilename = Dir(strPath & cnsDIR, vbNormal) Do While strFilename <> "" MsgBox "FILE-NAME=" & strFilename '次のファイル名を取得 strFilename = Dir() Loop
テキストファイルの入出力
Dim strPath1, strPath2 As String Dim strTxt1 As String strPath1 = "c:\temp01\dataIn.txt" strPath2 = "c:\temp01\dataOut.txt" Open strPath1 For Input As #1 Open strPath2 For Output As #2 Do Until EOF(1) Line Input #1, strTxt1 Print #2, strTxt1 Print #2, ”” "改行 Loop Close #1, #2
シートの数、最大値
Dim cntSht_max As Long cntSht_max = Worksheets.count '1番目のシートに2番目以降の全シート名を取得する '※注意! 1番目のシートにデータがないこと Dim cntSht As Long For cntSht = 2 To Worksheets.Count Sheets(1).Cells(cntSht, 1) = Sheets(cntSht).Name Next Sheets(1).Cells(1, 1) = "シート名"
Excel実行時の画面遷移を表示させない
'表示させない Application.ScreenUpdating = False '表示させる Application.ScreenUpdating = True
Excel実行時の指定のセルに画面を遷移させる
Application.Goto Reference:=Sheets(1).Cells(ix1, iy1), Scroll:=True
エラーが発生したときなど、上記コマンドで該当箇所に遷移したのち、[MsgBox]でエラー内容を表示させるなどセットで使うと効果的です。
ただし、上記[9.]で「Excel実行時の画面遷移を表示させておく設定」で実行します。
削除などの確認メッセージを表示させないで強制実行する
例えば、シートを削除するコマンドを実行しようとすると「このシートは完全に削除されます。続けますか?」と確認メッセージが表示されます。
確認メッセージを表示させないようにする方法です。
'確認メッセージを表示させない Application.DisplayAlerts = False '確認メッセージが表示されるコマンド '「Sheets(1).Delete」など '確認メッセージを表示させるように戻す Application.DisplayAlerts = True
最後に
ノートに転記するのはたいへんですから、メモ帳やExcelに貼り付け、加工編集・印刷し、また更にカットして活用するものひとつです。
職場で自分に割り当てられたパソコンにて、コピー&ペーストして使いやすいように加筆・修正や不足していいるコマンドなどを追加しデスクトップに貼り付けておくことをお勧めします。
>
>
私の場合は、整理したフォルダの直下において置き、デスクトップにはフォルダのショートカットを置いてアクセスしています。
今後、利用可能な環境であれば、この記事を含むExcl-VBAの記事にアクセスしようと思います。
コピー&ペーストすればミスを少なく、迅速に対応できますので。
コメント