VBAファイル操作
マクロファイルのあるフォルダのExcelファイルを開きたい Function OpenFileName() As String ' カレントフォルダを取得する MsgBox Application.DefaultFilePath ' カレントフォルダをマクロファイルのあるフォルダに設定する Application.DefaultFilePath = ThisWorkbook.Path MsgBox Application.DefaultFilePath OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xlsx") If OpenFileName <> "False" Then Workbooks.Open OpenFileName End If End Function
・標準モジュールを作成
Sub モジュール名()を入力すると、自動的にEnd Subが作成される。
形としてはこれでOK。これから中身を作りましょう。
・メッセージを表示
モジュール内にmsgbox("hogehoge")と入れてみましょう。
マクロを実行すると、hogehogeと記載されたメッセージボックスが現れます。
・値を入力する変数を宣言
セルの中身を入力する変数を宣言します。宣言方法:Dim 変数名 As データ型
データ型は、整数ならInteger、文字列ならString、すべてのデータの形に対応しているものならVariant、...などがあります。
・どこのセルなのかを指定する
ワークシート、セルの場所を設定します。変数名 = Worksheets(”シート名”).Range(”セルの場所”)
※確認方法
デバッグプリントメソッドを使いましょう。
モジュール内に
Debug.Print 変数名
と入れましょう。
あとは、イミディエイトウィンドウを開いておいて(表示⇒イミディエイトウィンドウ)からマクロを実行すればイミディエイトウィンドウに変数の中身が出力されます。
まず、ユーザーフォームを作りましょう。
VBAの挿入でユーザフォームを作り、ツールボックスでテキストボックスを追加します。
標準モジュールのなかで
Function宣言をします。
Function オリジナル関数名(引数)
関数の処理
End Function
でOKです。
RangeとCellsは似ていてどちらでもセルに値を入力したりすることができます。
では使い勝手において何が違うかというとCellsの方が変数を使うことに向いていることです。
・セルを表すには
Range("セル番号”) 例:Range(”A1")
Cells(行番号,列番号) 例:Cells(1,1)
になります
・セル範囲を表すには
Range(”左上セル番地:右下セル番地”) 例:Range(”A1:B2")
Range(”左上セル番地”,右下セル番地”) 例:Range(”A1","B2")
・場所の離れたセルを表す
Range(”セル番地,セル番地,・・・”) 例:("A1,Z20")
・選択しているセルを参照するには
ActiveCell:アクティブになっているセル
Selection:選択しているセル(複数も可)
関数(引数) | 説明 |
Asc(文字) |
文字のコードを返す |
Chr(文字コード) |
文字コードの文字を返す |
InStr([検索開始位置],検索対象文字列,検索する文字列,[比較モード]) |
検索する文字列が検索対象文字列のどの位置にあるか調べ、その先頭位置を数値で返す |
Abs(数値) |
指定した数値の絶対値を返す |
AppActivate(アプリケーション のタイトル文字列,[呼び出し側のアプリケーションにフォーカスするかを指定(TRUE/FALSE]) |
指定したアプリケーションをアクティブにする |
StrConv(変換する文字列, 変換の種類, 国別情報識別子[省略可]) |
文字列を指定した方法で変換する |
・月間カレンダー
マクロを立ち上げて年月を入力すれば、月曜始まりのカレンダーを作成します。
A5サイズにプリントアウトすることを想定して作っています。
何かご質問、ご意見等あればコメント欄に入力をお願いします。
ダウンロードはこちらから
コメントをお書きください