VBA×Excelに関するメモ
VBAはOffice製品を動かすためにしか使用できないと思っていました。しかし、WindowsAPIなるものが動かせるそう。また、Excelでもpyhonのモジュールやpywin32ではうまく機能しないものがあったため、VBAを勉強することにした。Excelを侮ってはいけないとはよく言ったものだったが、VBAも侮ってはいけないらしい。参考文献はVBAの解説サイトの中で、評判が良かったもの。文章がわかりやすく、おそらく論文とかたくさん書いてきた人かな…なんて思ったり。Thanks、見知らぬ親切な人(^_-)-☆。
1.注意事項
1.自動記録の出力と一般的に使用する構文が異なる
らしい。ふざけんな~~~
例:値の入力
自動記録:FormulaR1C1メソッド
一般:valueメソッド
2.カレントディレクトリが"C:\Users\ユーザー名\Documents"
CurDir:カレントディレクトリを示す定数
変更しない限り、VBAをプログラムを記載したファイルが格納されたフォルダではなく、Documentまでのパスが表示される。相対パスでファイルを示したい場合は注意。ThisWorkbook.Pathであれば、通常のカレントディレクトリが取得できる。
3.ワークブックやワークシートのアクティブ化は極力しない
ワークブックやワークシートは階層化されていて、ドットでつなぐことで指定できる。どれがアクティブか混乱するので、アクティブ化をして操作するのではなく、階層で指定してブックやシートを操作する。
4.2回目のDir関数は、1回目と同じ条件での追加検索
Dir関数は、パスを指定してファイル名を取得することができる。正規表現を用いると、パターンにマッチするもの全てを取得することができるが、Dir関数の1回目では、その中で初めてマッチしたものしか取得できない。全て取得するためには、Do Loopを用いて、引数なしのDir関数を複数回呼び出す必要がある。pythonでは、os.scandirでできるが、VBAでは関数の非常にめんどくさい
5.セル名と同じプロシージャ名はつけられない
プログラムをボタンで起動したい場合に、以下のエラーが出る場合がある。セル名で使用されるプロシージャ名はつけられないとのこと。p3ならoutだが、p_3ならok。
![](https://assets.st-note.com/img/1714468995988-SCH0ETPyDp.png)
セルの選択
Range("A1")
Range("A1:A10")アクティブセルにする
Range("A1").Select
Range("A1:A10").Select選択したセルの値を削除
Selection.ClearConents型確認
TypeNameメソッドWorkbooksの使用方法
Countメソッドで開いているWorkbookの個数を確認できる
For Eachで格納されている全てのWorkbookに対して処理が可能
Workbooks("Workbook名")で特定のWorkbookを取得可能
PERSONALファイルも格納されている
ThisWorkbook:今開いているファイル
Workbooks :開いているExcelファイル全てのコレクション
CurDir :カレントディレクトリ
Time :現在の時刻(例 16:35:41)
2.機能処理
1.削除関連
Cells.Clear:現在のワークシートのすべてを削除
Cells.ClearContents:内容のみを削除
Cells.ClearFormats:書式の削除
2.幅の自動設定
Columns.Autofit
3.Active関連
ActiveSheet
ActiveBook
4.主要メソッド
1.文字列変換
Replace("ABCDE", "A", "")
5.主要ショートカット
Ctrl Pause(break) : 処理中断
この記事が気に入ったらサポートをしてみませんか?