VBAを勉強しよう

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

RangeとCellsは似ていてどちらでもセルに値を入力したりすることができます。

では使い勝手において何が違うかというとCellsの方が変数を使うことに向いていることです。

・セルを表すには

Range("セル番号”)  例:Range(”A1")

Cells(行番号,列番号)  例:Cells(1,1)

になります

・セル範囲を表すには

Range(”左上セル番地:右下セル番地”)  例:Range(”A1:B2")

Range(”左上セル番地”,右下セル番地”)  例:Range(”A1","B2")

・場所の離れたセルを表す

Range(”セル番地,セル番地,・・・”)  例:("A1,Z20")

・選択しているセルを参照するには

ActiveCell:アクティブになっているセル

Selection:選択しているセル(複数も可)

VBA関数

関数(引数) 説明
Asc(文字)

文字のコードを返す

Chr(文字コード)

文字コードの文字を返す

InStr([検索開始位置],検索対象文字列,検索する文字列,[比較モード])

検索する文字列が検索対象文字列のどの位置にあるか調べ、その先頭位置を数値で返す

Abs(数値)

指定した数値の絶対値を返す

AppActivate(アプリケーション のタイトル文字列,[呼び出し側のアプリケーションにフォーカスするかを指定(TRUE/FALSE])

指定したアプリケーションをアクティブにする

StrConv(変換する文字列, 変換の種類, 国別情報識別子[省略可])

文字列を指定した方法で変換する

作成マクロ

・月間カレンダー

マクロを立ち上げて年月を入力すれば、月曜始まりのカレンダーを作成します。

A5サイズにプリントアウトすることを想定して作っています。

何かご質問、ご意見等あればコメント欄に入力をお願いします。

 

ダウンロードはこちらから