VBA
パスを指定してフォルダを作成する。 下記みたいな指定の場合でも存在しないパスごと作ってくれる。 MakeNotExistsDir("存在するパスA\存在しないパスA") MakeNotExistsDir("存在しないパスA\存在しないパスB\存在しないパスC") Option Explicit 'WindowsのA…
VBAからパスワードのかかったExcelファイルを開く際、普通にWorkbooks.Openするとパスワード入力ダイアログで止まってしまう。 この場合、パスワードを入力するかダイアログを閉じるまで実行中の処理が停止してしまう。 また、ダイアログを閉じた場合にはエ…
クイックソート アルゴリズムが少し複雑。早い。 C言語で文字列のクイックソート - テクメモ バブルソート アルゴリズムが簡単。あまり早くない。 バブルソート '/** ' * quickSort ' * 配列をクイックソートする ' * 大小比較できる型ならとりあえずソート…
'/** ' * getTargetFolders ' * 与えられたパス配下のフォルダをサブフォルダまで配列で取得する ' * @param strDirectoryPath パス ' * @return フォルダ名のString配列 ' */ Function getTargetFolders(ByVal strDirectoryPath As String) As String() Dim…
Dir関数の注意 Windows由来の問題で3文字より長い拡張子を3文字に切り詰めるらしく、xlsでxlsxもxlsmも取れてしまうらしい。ヤバイ。 Office TANAKA - Excel VBA Tips[Dir関数の注意点] ページ数を取得するPageSetup.Pages.CountがExcel2007~2010でバグって…
Not (Mid(strInput, i, 1) Like "[ヲ-゚]" Or strInput = "-")で不要な文字種を除外。 ※"[ヲ-゚]“と”-“を指定するとカタカナひらがなの必要そうな文字列を抽出できる。 ”-“を半角カナに含みたくない場合はstrInput = "-"を外す。 その後StrConvで一度文字列を半角カ…
Accessでは、Option Compareステートメントによって文字列の比較方法が決定される。 モジュールを作成した際には自動でDatabaseモードが付加されるが、 この記述を削除し、何も書かなかった場合の既定値はBinaryモードとして定義されている。 モード 概要 Bi…
自分自身を大文字に変換した後、変換前後を比較すると大文字小文字を判定できる。 VBAでは大文字小文字がイコールではうまく判定されないので、 StrComp("変換文字列1", "変換文字列2", vbBinaryCompare) でバイナリでの比較を行う必要がある。 Option Expli…
VBAのRound関数は銀行家丸め(銀行型丸め、銀行丸めともいうらしい)になっているらしい。 ので何も考えないで四捨五入しようと思ったらできなかった。 銀行家丸めとは 銀行型丸めとは、切り捨てるときに一番近い偶数に近づける方法。 単に四捨五入していくよ…
First(), Last(), DFirst(), DLast() VBAのこれらの関数はORDER BY句や、インデックス、主キーを考慮せず、 「ディスクのレコードを読み込んだ順」の最初と最後を取得する。 なので、下記のようなSQLとは必ず等価にならず、どんな値が返るのかも予想が困難な…
いつも忘れるので自分用にメモ ショートカット 説明 Ctrl+↑ 前のプロシージャに移動 Ctrl+↓ 次のプロシージャに移動 Ctrl+PageUp 現在のプロシージャの先頭へ移動 Ctrl+PageDown 現在のプロシージャの最後へ移動 Ctrl+Home 現在のモジュールの先頭へ移動 Ctr…
前提 Access 2010 リストボックスは複数選択可 用意 テーブル フォーム コード リストボックスを全て選択・選択解除 [リストボックスの名前].Selected(数字)はリストボックスの指定項目の選択状態のプロパティ。 Trueにすると選択状態に、Falseにすると非選…
はじめに 動作確認はExcel2010を使用。 上記の画像のように、VBAのエディタでは画面上部にカーソル位置の行数は表示されるものの、 ソースの行番号が表示されない。この問題を解決する方法を紹介する。 用意するもの AddLineNumbers VB6/VBA 上記サイトにア…
Officeが32ビット版か、64ビット版かによってVBAのコードにも変わってくる部分があるため、判定したい場面がある。 VBAにはその仕組みがあるので解説。 条件付きコンパイルとは 設定値等に応じて、実行される部分を変えることができる記述方法。 VBAでは、実…
VBAはもっと配列回りが楽にいじれるようになってもいいとおもう。 配列判定のついでに要素数を取得するプロシージャ。空の配列を参照するとエラーになってしまうので、扱いやすくするために実装。 しょぼい。 Option Explicit '/** ' * IsArrayLen ' * 引数…
Abs(number) number:任意の数や数式、変数 引数に与えられた値の絶対値を返す。 Sub test() Debug.Print Abs(-1) Debug.Print Abs(1) Debug.Print Abs(-256) + Abs(256) End Sub
ファイル内のクエリを一括で吐き出して検索かけたいことがあったので1ファイルに吐き出すようにするプロシージャを作成。 '/** ' * outputQuery ' * クエリをテキストファイルに出力 ' * @param Optional i_outputPath (出力先を指定する場合)ディレクトリパ…
結構な件数のデータを一度にデバッグで吐き出したかったけどイミディエイトウインドウの制限に引っかかって出力しきれなかったのでファイルに書き出したりするやつを用意した。 '/** ' * OutputLog ' * デバッグログをファイルに出力する ' * @param varData…
VBAにもクラスのコンストラクタとデストラクタがあるらしく、利用方法をまとめた。 コンストラクタ Public Sub Class_Initialize() 'ここに処理を書く End Sub デストラクタ Public Sub Class_Terminate() 'ここに処理を書く End Sub ただし、引数を設定する…
Environ(Expression)実行されたPCの環境変数を取得する関数。 実行時に指定した環境変数が存在しない場合は長さ0の文字列("")を返す。expression:環境変数を指定する文字列か、環境変数の番号を指定する。 主に利用されやすい環境変数として以下のものがある…
Format(expression[,format[,firstdayofweek[,firstweekofyear]]])expression:フォーマットを設定するデータを設定 format :(省略可能)任意のフォーマットを指定 '-------------------------------------------------------------- '下記の引数については使…