VBA

Excel

Excelのファイル名に日時を付けて保存するマクロ

Excelで作業しているとき、大きな間違いに気付いて以前の内容に戻したいことがありますが、上書き保存してしまっていて戻せないケースがあります。そこである程度、作業したらファイル名を変えて保存するという方法があります。エクセルで「上書き保存」...
Excel

アクティブシートの数式を削除して値にするマクロ

Excelのファイルを他人に渡すときに数式を見られたくないケースがあります。まず、前に照会したPDFで保存する方法があります。また、数式を値に置き換える方法があります。範囲を選択してコピーし「形式を選択して貼り付け」で「値」を選択すればよい...
Excel

Excelで年齢を求める方法

Excelで年齢や経過年数を求める場面があります。DATEDIFという関数を使えば求められますが、なぜかExcelはこれを標準の関数とはしていないようです。以下、A1セルに生年月日、B1セルに基準日が入力されているとします。このとき、C1セ...
Excel

配列を利用してセルを取得し別のシートにセット

前に複数のセルに値をセットするときは配列を使うと処理が速いということを紹介しましたが、今回はその応用です。「あるシートのデータを加工して別のシートにセットする」という場合があります。下で紹介するサンプルは、あるシートのデータを一気に配列に取...
Excel

VBAでScreenUpdatingをFalseにすると処理が速い

ExcelのVBAの処理の高速化の一つにScreenUpdatingをFalseにする方法があります。通常、いずれかのセルの値を変更するとそれを表示するために画面が更新されます。これに時間がかかります。「Application.Screen...
Excel

矩形範囲を配列として取得

Excelのマクロで「複数のセルに値をセットするときは配列を使うと処理が速い」ということを紹介しました。複数のセル(範囲)に配列を使って値をセットするだけでなく、配列として値を取得することができます。「arrs = Range("a1:b2...
Excel

「.Calculation」と「.EnableCalculation」のどちらが効果的か

Excelのマクロの処理を高速化するために、マクロの実行中のワークシート上の計算を止めるという方法があります。通常はセルの内容が変われば自動的に計算されます。これを一時的に停止しマクロの実行後に元に戻すという方法です。二つ方法があります。
Excel

複数のセルに値をセットするときは配列を使うと処理が速い

Excelでマクロを使って複数のセルに値をセットする場合、通常は次のようにすると思います。次のサンプルはA1セルからJ10セルまでの範囲に行番号と列番号の積をセットします。九九の表のような感じです。
Excel

Excelの列番号を英字に変換するユーザー定義関数

「(1,1)」のセルならば「A1」と表示したいのですが、これを行うには、1ならばA、2ならばB、27ならばAAというように、列を英字に変換する必要があります。ヘルプを調べましたが見付からなかったのでユーザー定義関数を作ってみました。
Word

Wordで脚注を括弧書きに変換するマクロ

以前、脚注を括弧書きに変換するマクロを紹介しました。しかし、脚注が長すぎると(255文字超)、エラーになります。これを改良して、脚注が長くても対応できるようにしました。次に紹介するマクロの他に、以前、紹介した「長い文字列の置換」「全てを置換...