HOME > Excel VBA

Excel VBA

よく使う関数

一般的な関数

' シングル・クオーテーションでコメントアウト.
_ 長いステートメントの入力(行末に入力してから改行する).

繰り返し文

For i = 1 To n
Next i
i=1からnまでのループ.
Do While 条件式
Loop
条件式が満たされている間はループ.
※最初に条件式を評価する.
Do
Loop While 条件式
条件式が満たされている間はループ.
※必ず処理を1回し,その後に条件式を評価する.
Do Until 条件式
Loop
条件式が満たされまでループ.
※最初に条件式を評価する.
Do
Loop Until 条件式
条件式が満たされまでループ.
※必ず処理を1回し,その後に条件式を評価する.

その他

With
End With

一般的なシンタックス

' シングル・クオーテーションでコメントアウト.
_ 長いステートメントの入力(行末に入力してから改行する).

(Uploaded: 2010年11月08日, Last Updated: 2011年03月13日)  ページ上部へ移動

モジュールの一括エクスポート

複数の標準モジュールを一括でエクスポートするマクロです.

Sub ModuleExport()

 'プロジェクトの宣言
 Dim Project As Object
 Set Project = ActiveWorkbook.VBProject.VBComponets
 
 'Pathを指定
 Path = "C:/ExcelVBA/Export/"
 
 'Pathのフォルダ内に標準モジュールをすべてエクスポート
 For i = 1 to Project.Count
  If Project(i).Type = 1 Then
   Project(i).Export Path & Project(i).Name & ".bas"
  End If
 Next i

End Sub

以下に簡単な説明です.

  1. "Project"をオブジェクトとしてを宣言する.
  2. 標準モジュールの保存先フォルダを"Path"に設定する.
  3. Forループを使って,全てのVBコンポーネントのうち,標準モジュールのみをエクスポートする.

"Project.Count"でVBコンポーネントの全数を把握します."Project(i).Type"で標準モジュールの選択を行っています.標準モジュールのTypeの値は"1"です.

使用は自己責任のもとでお願いいたします.

【参考文献】

(Uploaded: 2010年11月08日, Last Updated: 2010年11月08日)  ページ上部へ移動

モジュールの一括インポート

外部のエディタで複数のモジュールを作成し,一括でそれらのモジュールをインポートするマクロです.

Sub ModuleImport()

 'プロジェクトの宣言
 Dim Project As Object
 Set Project = ActiveWorkbook.VBProject.VBComponets
 
 'Pathを指定
 Path = "C:/ExcelVBA/Import/"
 
 '拡張子".bas"のファイル名を読み込む
 Filename = Dir(Path & "*.bas")
 
 'Pathのフォルダ内の".bas"ファイルをすべてインポート
 Do While Filename<>""
  Project.Import Path & Filename
  Filename = Dir
 Loop

End Sub

大規模なモジュールを作成するときには「プロシージャが大きすぎます」とエラーがでます.そのためモジュールを分割する必要があります.そのようなときに,このマクロを使って全てのモジュールを一括でインポートします.

以下に簡単な説明です.

  1. "Project"をオブジェクトとしてを宣言する.
  2. モジュールの存在するフォルダを"Path"に設定する.
  3. Pathフォルダ内の拡張子".bas"のファイル名を"Filename"として設定する.
  4. "Do While ... Loop"を使って,全ての".bas"ファイルをインポートする.

エクスポートのマクロをインポート用に書き換えました.ステップ4のDo Whileループによる方法は,大庭・常見 (2007, pp. 459-462)のQuestion 365を参考にしました.

使用は自己責任のもとでお願いいたします.

【参考文献】

(Uploaded: 2010年11月08日, Last Updated: 2010年11月08日)  ページ上部へ移動

モジュールの一括削除

モジュールを一括で削除したいときに使います.

Sub ModuleRemove()
 'ProjetctをObjectとして宣言
 Dim Project As Object
 Set Project = ThisWorkbook.VBProject.VBComponents

 'ObjVBをObjectとして宣言
 Dim ObjVB As Object

 'このブックの全モジュールを解放(Type=1が標準モジュール)
 For Each ObjVB In Project
  If ObjVB.Type = 1 Then
   Project.Remove ObjVB
  End If
 Next ObjVB
End Sub

使用は自己責任のもとでお願いいたします.

【参考文献】

(Uploaded: 2012年05月13日, Last Updated: 2012年05月13日)  ページ上部へ移動

行列の計算

行列の積はMMULT関数で計算することができます.

計算結果を表示するセルを選択し,一番左上の要素にMMULT関数をタイプし,あとはCTRLキー,Shiftキー,Enterキーを同時に押します.すると選択したセルに計算結果が現れます.

(Uploaded: 2011年02月22日, Last Updated: 2011年06月22日)  ページ上部へ移動

データの結合

vlookup

(Uploaded: 2012年02月13日, Last Updated: 2012年02月13日)  ページ上部へ移動

文字列の操作

エクセルでは文字列を使うことが頻繁にあります.文字列に関する便利な関数です.

数字を文字列に変換

For i = 1 To 5
  tmp = CStr(i)
  Worksheets(tmp).Cells(1,1).value = "TEST"
Next i

連番のワークシート名にしておけば,数字をCStr関数を使って文字列に変換することで一括で操作できます.

文字列の一部を抜き出す

便利な関数は,LEFTMIDRIGHTです.

(Uploaded: 2011年10月04日, Last Updated: 2011年10月04日)  ページ上部へ移動

いろいろなTips

すべてのシートを選択

シートの右クリックメニューより,「すべてのシートを選択」で全てのシートを選択した状態にできます.このとき,一つのシートを変更すると選択されたシートの同じ場所のセルが一括で変換できます.

ブックのすべてのシートを印刷

印刷メニューより,ブック全体を選択することで,ブックのすべてのシートが印刷できます.

(Uploaded: 2011年10月04日, Last Updated: 2011年10月04日)  ページ上部へ移動

(Uploaded: 2011年02月22日, Last Updated: 2011年02月22日)  ページ上部へ移動