VBA備忘録

VBAソースの備忘録。当面Excelのみ。

Dir関数を複数同時実行してはいけない

前回「フォルダ内のファイルを取得する」の時、Dir関数についての注意事項をこう述べた。 注意事項 フォルダ内からファイルを取得するDir関数があるが、Dir関数は入れ子になる(Dir関数実行中に、内部で別のフォルダでDir関数を実行する)と戻り値が被るので…

フォルダ内のファイルを取得する

前提条件 マクロ実行ブックが格納されているフォルダの、ファイルを全て取得 注意事項 フォルダ内からファイルを取得するDir関数があるが、Dir関数は入れ子になる(Dir関数実行中に、内部で別のフォルダでDir関数を実行する)と戻り値が被るのであまり使用し…

複数の置換を一度に処理

複数の置換を一度に処理する 前提条件 A列のデータを、C、D列のデータ通りに置換する(共に実データは2行目から) A列、C,D列共に、行数に制限はないものとする 仕様 列は固定だが、定数としてソース上で定義する C,D列の語句一つ一つを、Range.Replaceを使…

Dialogでフォルダを指定

読み込む、または保存などで、任意のフォルダを指定する 前提条件 Dialogを表示し、フォルダを指定する Dialog上でキャンセルボタンを押下した場合は、処理を行わない 初期表示DialogはActiveWorkBookのフォルダか否か選べる 仕様 初期表示Dialogに指定する…

Excelファイルをcsvデータにして保存

Excelファイルをcsvデータとして保存する 前提条件 現在開いているExcelファイル、シートが対象 同フォルダに保存 Excelファイルとcsvデータのファイル名は同一(拡張子のみ異なる) 問題点 csvに保存した瞬間、開いていたExcelファイルがcsvファイルにすり…

AccessデータをExcelにコピーし「折り返して全体を表示する」を解除

AccessのデータをExcelに貼り付ける際、 ↓ 貼り付け ↓ このままでは見栄えが悪いので、以下の処理を行う ①セルの書式設定で「折り返して全体を表示する」のチェックを外す ②列幅を自動調整 この①、②を実行する関数 Sub AccessToExcelFormat() '「折り返して…

セルの書式を書き出す

'------------------------------------------------------'セルの書式設定を書き出し'' 戻値:なし'' 引数:コピー元セル(範囲指定は不可)' :コピー先セル(範囲指定可)'' 注意:コピー元セルが複数指定されている場合エラーとする'-------------------…

セル書式を書き出す

この表の各セルの書式を赤い罫線内に書き出す A列:文字列(A4のみ標準)、B列:数値、C列:通貨 1行目はタイトルなので値をコピー Dim lngMaxRow As Long Dim lngMaxCol As Long Dim i As Integer Dim j As Integer '表内最大行を取得 lngMaxRow = lngGetMa…

For Nextを使って表をコピー

この表を赤い罫線内にコピーする Dim lngMaxRow As Long Dim lngMaxCol As Long Dim i As Integer Dim j As Integer '表内最大行を取得 lngMaxRow = lngGetMaxRow(ActiveSheet) '表内最大列を取得 lngMaxCol = lngGetMaxCol(ActiveSheet) For i = 1 To lngMa…

セルの書式をコピー&ペースト

'------------------------------------------------------'セルの書式設定をコピー'' 戻値:なし'' 引数:コピー元セル(範囲指定は不可)' :コピー先セル(範囲指定可)'' 注意:コピー元セルが複数指定されている場合エラーとする'---------------------…

表内最終列を取得

'------------------------------------------------------'表内最大列を取得'' 戻値:表内最大列'' 引数:対象ワークシート' :カウント基準となる行(省略時:1(1行目))'' 注意:オートフィルター、非表示は解除してから行うこと'---------------------…

表内最終行を取得

'------------------------------------------------------'表内最終行を取得'' 戻値:表内最終行'' 引数:対象ワークシート' :カウント基準となる列(省略時:1(A列))'' 注意:オートフィルター、非表示は解除してから行うこと'-----------------------…

マクロを組むとき まずどうするか④ 関数をボタンに紐付ける

【開発】タブ⇒【挿入】⇒フォームコントロールの【ボタン】を選択 マウスをドラックし、任意の場所にボタンを作成 マクロ選択画面が自動で表示されるので、先ほどの「GetValue」関数を選択 【OK】を押下する ボタンが作成されているので、押下。「GetValue」…

マクロを組むとき まずどうするか③ 関数を呼ぶ

Excel ワークシートに戻る (A1セルに「Test Message」と値が入っている) 【マクロ】を選択 マクロの一覧が表示され、先ほど作成した「GetValue」が確認できる。 「実行」ボタンを押下すると、 A1の値を表示するメッセージボックスが表示される

マクロを組むとき まずどうするか② Sub関数を作成

「sub」スペース「関数名」(ここではGetValue)と入力 エンターキーを押すと、関数の形が自動で作成される この関数内に処理を記載する。 ここではセルA1の値をメッセージとして表示する関数を作成

マクロを組むとき まずどうするか① 標準モジュールを挿入

【開発】⇒【Vidual Basic】をクリック Microsoft Visual Basic for Applications の画面が表示されるので、 【Microsoft Excel Object】(右クリック)⇒【挿入】⇒【標準モジュール】を選択 標準モジュールに【Module1】が作成され、コード記述できる空間が表…

コメント規約

基本的なコメント文 'コメント文 修正時のコメント文 追加'---YYYYMMDD 追加 修正が起こった要因、結果をなるべく詳しく'---------------- 長くなったらこうして改行 '---YYYYMMDD 追加 終了 修正 '---YYYYMMDD 修正'---------------- '---YYYYMMDD 修正 終…

データ型別変数の命名規約

変数の定義 Dim そのモジュール内でしか値を保持しない変数 Dim strString As String '文字列型 Dim lngLong As Long '数値型(long) -2,147,483,648~2,147,483,647 Dim iInteger As Integer '数値型(integer) -32,768~32,767 Dim blBoolean As Boolean '…

RangeとCellsの違い

RangeとCellsのアドレスは逆と覚える Range("B1") ←("列行") Cells(1,2) ←("行列")