2023/01/30
【業務】文章作成サポートツール

【業務】文章作成サポートツール



YouTubeで開く

文章の作成をサポートする便利ツールの開発方法について解説しています。
予めテンプレートを設定することで、効率よく文章を作成できます。
クライアント(お客様)単位でテンプレートを用意したり、会議単位で議事録のテンプレートを用意することなどができます。

こちらで紹介している内容は、2つまでしか保存できませんが、少し応用すると、いくつでも増やすことができ、メール送信機能なども付けられます。

00:00 挨拶
00:04 完成イメージ
01:17 準備
01:22 作成(定型文の保存先)
01:57 作成(フォーム:外部)
08:11 作成(フォーム:内部)
20:28 作成(フォーム呼び出し)
21:21 作成(VBSファイル)
22:16 完成
23:25 プログラムの全体
27:23 まとめ

2023/01/23
【業務】特定のシートを参照なしで出力

【業務】特定のシートを参照なしで出力



YouTubeで開く

複数のシートが存在するExcelファイルの一部のシートを共有する際に、不要なシートを削除すると参照エラーになる可能性があります。
こちらでは、出力対象のシートに含まれる参照を全てなくした状態で別ファイルとして出力する方法について解説しています。

数式は値に、グラフは図に変換されます。

顧客(お客様)などに送付する用のデータを用意する際に便利です。

00:00 挨拶
00:52 完成イメージ
01:53 準備
02:33 作成(参照なしシート出力)
14:10 完成
16:12 プログラムの全体
20:42 まとめ

▼準備ファイル▼

2023/01/16
【業務】動的なドロップダウンリスト

【業務】動的なドロップダウンリスト



YouTubeで開く

既に選択された値を表示しない「動的なドロップダウンリスト(プルダウン)」の作成方法について解説しています。
重複が許させない項目などのドロップダウンリストなどに活用すると便利です。

00:00 挨拶
00:09 完成イメージ
01:28 準備
02:00 実装方法
02:35 作成(未割当の表示)
06:29 作成(動的リスト)
08:59 作成(エラー対策)
12:13 作成(動的罫線)
14:34 完成
15:21 まとめ

▼準備ファイル▼

2023/01/09
【便利】選択範囲に遷移するリンクを自動生成

【便利】選択範囲に遷移するリンクを自動生成



YouTubeで開く

リンク一覧表を自動で作成する機能の開発方法について解説しています。
後で確認したいセルがあれば、対象のセルを選択した後に「事前に設定したショートカットキー」を入力することで簡単にリンクを登録することができる機能になります。
目次作成や確認作業などで活用できる便利な機能です。

00:00 挨拶
00:06 完成イメージ
01:45 準備
02:16 作成(リンク自動作成)
15:01 作成(ショートカットキー割当)
15:52 完成
17:03 プログラムの全体
22:35 まとめ

▼準備ファイル▼

2023/01/08
【ex23】Excelの計算は正しくないことがある!

【ex23】Excelの計算は正しくないことがある!

こちらではExcelの計算の仕組みや注意点、対策について解説しています。




・計算結果の確認

まず最初に、次の計算結果を確認します。

これはB列の値からC列の値を引いた答えをD列に数式により結果を表示させています。
画像ではすべてが「0.1」と表示されています。

では、上記の内容を踏まえ、「引いた答えが0.1の場合に○」という条件式を書いてみます。

そうすると、ところどころ「○」ではない箇所が見つかります。
ここで多くの人は「え?」となります。

ただ、これはExcelの不具合ではなく、コンピュータで計算する上でどうしようもない問題になります。
最初の引き算の答え「0.1」の表示桁数を増やしてみます。

ところどころ、「0.1」ではなくなってしまっています。

それ以外でも、次の場合も正しく計算できません。




・Excelの計算の仕組み

まずコンピュータがどのように数字を扱っているのかについて確認します。




→コンピュータの数字

通常、私たちが生活で目にする数字は0から9まで数えたら桁が上がり10,11,12,13となる10進数と呼ばれているものになります。
0から9の10種類の数字で成り立っているため10進数と呼ばれます。

しかし、コンピュータでは10進数でデータを扱うことができません。

基本的にコンピュータは電気で動いています。
電気の流れから取得できる情報は「電圧がある値よりも大きいのか小さいのか」といった情報になります。
そのため、送られてくる電気から取得できる情報は1回あたり2種類になります。

これを「0~0.9Vを0、1~1.9Vを1、…」のように10種類にすれば10進数でできるように感じますが、電圧は安定しません。
そのため、多少の誤差を考慮できるように、ある値(閾値)よりも大きいのか小さいのかで表現されています。

2種類の情報しかないため、10進数では表現できず2進数で数字を表現することになります。
2進数は0と1の2種類の数字で成り立っています。
そのため、0から1まで数えたら桁が上がり10,11,100,101,110となっていきます。

2進数から10進数を求める方法は2のn乗で掛けて計算します。
例えば、2進数「1001」の場合は、「1×2^3 + 0×2^2 + 0×2^1 + 1×2^0」となり10進数「9」になります。

2進数では小数も扱うことができます。
例えば、2進数「10.1」の場合は、「1×2^1 + 0×2^0 + 1×2^-1」となり10進数「2.5」になります。

つまり2進数で表現できる数は必ず2のn乗の合計になります。
そのため、10進数「0.1」など2進数では正しく表現ができない数が存在します。

10進数「0.1」を2進数で表現すると「0.000110011001100…」という感じに循環小数になります。
これは10進数「10」を3で割り切れないのと似ています。

このように2進数では10進数よりも表現できる数の種類が少ないため、誤差が生じます。




→Excelの数字

ここまでの内容を踏まえた上で「でも、Excelで0.1と計算できているのもあるじゃん」と思われた方もいるかと思います。

これは、ExcelがIEEE754の仕様に基づいて作成されているためです。
IEEE754というのは、IEEE(米国電気電子学会)という学会が決めたルールになります。
→コンピュータを全世界で連携するためにはルールを共通化する必要があります。

その仕様上、10進数で表現できる精度が15桁になるため、15桁より大きい数字は切り捨てられてしまいます。

そのため、上記の計算結果をさらに細かく書くと以下のようになります。
※Excelでは表現することができないため文字列で直接入力しています。

実際は0.1ではないのですが、15桁で切り捨てられた結果0.1になったというのが答えになります。




・小数点以下の計算をする上での注意点と対策

今までの内容を考慮すると、「小数点以下を含む計算の場合は、誤差が生じる可能性がある」ということを考慮する必要があります。
では、どのように対策すればいいのか3通りの方法を解説します。




→方法①

「ROUND関数を用いて指定した桁数で四捨五入する」という方法があります。

ROUND関数の使い方は以下のようになります。

=ROUND(数値,桁数)

桁数に小数点の位置を指定します。
桁数が「1」の場合は小数点第一位まで表現できるように四捨五入、
桁数が「2」の場合は小数点第二位まで表現できるように四捨五入、
桁数が「0」の場合は一の位まで表現できるように四捨五入、
桁数が「-1」の場合は十の位まで表現できるように四捨五入、
というように表現できます。

計算結果にROUND関数を使うことで以下のように正しく判定することができます。




→方法②

「元の値を10のn乗して整数にして計算する」という方法があります。

この方法を使った場合は以下のようになります。
この場合は、数字に対して単位などを書いておくとより分かりやすくなるかと思います。




→方法③

「表示桁数で計算」という方法があります。

この方法では、先ほどのIF文のように直接0.1と比較する場合には使うことができません。
ただ以下のように計算結果を表示させる場合には活用することができます。

これは、見た目上は0.1だけど実際は異なるものになります。
そのため、この値と0.1と比較すると以下のようになってしまいます。

これに対し、以下の設定を行います。

[ファイル]→[オプション]→[詳細設定]→[次のブックを計算するとき]→[表示桁数で計算する]

この時に「データの正確さが失われます。元に戻すことはできません。」と表示されます。
これは「実際に見た目で確認ができる数字を正として計算する」という設定です。
そのため、正確さが場合によっては失われるので、そのような警告になります。

上記の設定を行うと以下のように反映されます。

この設定はブック全体に反映されます。
そのため、最終手段として使用を考えてみるといいかと思います。
※私的には推奨しません。

というような感じで以上になります。
Excelの奥は深いですね…

2022/12/29
【ex21】作成したマクロにショートカットキーを設定

【ex21】作成したマクロにショートカットキーを設定

こちらでは、作成したマクロを効率よく呼び出すためのショートカットキーに割り当てる方法について解説しています。




・作成したマクロにショートカットキーを設定する①

まずは、一般的なCtrlキーとの組み合わせのショートカットキーの設定方法について解説していきます。

[開発]タブから[マクロ]を選択します。
※[表示]タブの中の[マクロ]でも大丈夫です。

以下の画面が表示されましたら、[オプション]を選択します。

ショートカットキーと書かれたCtrlの隣のテキストボックスに半角のアルファベットを入力します。
以下の例ですと、「a」と入力しています。

このように設定して[OK]で確定することで、「Ctrl + A」のショートカットキーが割り当てられました。
マクロに設定したショートカットキーは、既存のショートカットキーよりも優先順位が高くなります。
そのため、通常の「Ctrl + A」の全選択は無効になり、マクロ「test」が実行されるようになります。

ちなみに、設定時にShiftキーを押しながら半角のアルファベットを入力すると、以下のように「Ctrl + Shift」のショートカットキーが設定できます。

他、VBAでショートカットキーを設定する場合は以下のように記述します。

Application.MacroOptions Macro:="test", ShortcutKey:="a"

「test」がプロシージャ名で、「a」がショートカットキーになります。
上記の場合は、「Ctrl + A」に割り当てられます。

CtrlキーとShiftキーとの組み合わせを設定する場合は、大文字にします。
以下のように設定すると、「Ctrl + Shift + A」に割り当てられます。

Application.MacroOptions Macro:="test", ShortcutKey:="A"

設定したショートカットキーを解除する場合は、キーの部分を「””」にすることで解除できます。

Application.MacroOptions Macro:="test", ShortcutKey:=""

ショートカットキーの設定切替ボタンなどを作りたい場合は、VBAで直接設定する方法も覚えておくと便利です。




・作成したマクロにショートカットキーを設定する②

先ほど解説した内容ですと、割り当てることができるショートカットキーは全て「Ctrl」との組み合わせになります。
しかし、Excelでは「Ctrl」以外にも割り当てることができます。

その方法は、OnKeyメソッドというものを活用します。
一旦、先ほどと同じCtrlとの組み合わせのショートカットキーを割り当ててみます。
以下のように設定します。

Application.OnKey "^a", "test"

「test」がプロシージャ名で、「^a」がショートカットキーになります。
こちらを実行することで「Ctrl + A」に割り当てることができます。
注意しなければいけない点として、こちらの設定の場合は、Excelを終了するとショートカットキーが無効になります。
Excelを開いた後に、再度、上記の内容を実行しなければいけません。

Excelを開いたと同時に、上記の内容を実行できるようにするためには、ブックモジュールのOpenイベントプロシージャ内に記述するといいです。

「ThisWorkbook(デフォルトの場合)」と書かれているブックモジュールを開き、オブジェクト一覧からWorkbookを選択します。

そうすると、以下のような「Workbook_Open()」という特殊なプロシージャが入力されるため、その中に先ほどのショートカットキーを割り当てる内容を記述します。
「Workbook_Open()」はExcelファイルが立ち上げられたと同時に実行される特殊なイベントプロシージャというものになります。

また、OnKeyメソッドの設定は、対象のファイルが閉じられた後に関しても動かすことができてしまいます。
前半のオプションでの設定の場合は、対象のExcelファイルが閉じられると同時に、ショートカットキーが無効になります。
しかし、OnKeyの場合は、対象のExcelファイルを閉じた後にショートカットキーを入力すると、対象のExcelファイルが自動で立ち上げられ、マクロが実行されてしまいます。

対象のExcelファイルが閉じられたときに無効にする場合は、BeforeCloseというイベントプロシージャが活用できます。
先ほど作成したOpenイベントプロシージャ内にカーソルを置いた状態で、プロシージャ一覧からBeforeCloseを選択します。

そうすると、以下のような「Workbook_BeforeClose(Cancel As Boolean)」という特殊なプロシージャが入力されるため、その中に以下のように記述します。

プロシージャ名を省略することによって、ショートカットキー「^a」の割り当てをキャンセルすることができます。

イベントプロシージャについてはこちらの記事で詳しく解説しています。


続いて、Ctrlキー以外の割り当て方法についても確認していきます。

先ほど設定していた「^」はCtrlキーを意味します。
組み合わせて指定する場合は、「^」の他にも以下のものがあります。

+:シフトキー(大文字を直接入力してもシフトキーとの組み合わせ扱いになります)
%:Altキー
*:コマンドキー(2011年ExcelMacのみで動作すると公式には記載されています)

例えば、「Ctrl + Shift + A」に割り当てる場合は、「+^a」や「^+a」、「^A」などと設定します。
他にも、「^6」で「Ctrl + 6」などとアルファベット以外にも設定することができます。

ただ、F1キーやHomeキーなど一部特殊な入力が必要なキーも存在します。
特殊なキーは以下になります。

BackSpace:{BACKSPACE} または {BS}
Break:{BREAK}
CapsLock:{CAPSLOCK}
Clear:{CLEAR}
Delete または Del:{DELETE} または {DEL}
↓:{DOWN}
終了:{END}
Enter (テンキー):{ENTER}
Enter:~ (ティルダ)
Esc:{ ESCAPE} または {ESC}
HELP:{HELP}
ホーム:{HOME}
Ins:{INSERT}
←:{LEFT}
NumLock:{NUMLOCK}
PageDown:{PGDN}
PageUp:{PGUP}
Return:{RETURN}
→:{RIGHT}
ScrollLock:{SCROLLLOCK}
Tab:{TAB}
↑:{UP}
F1 ~ F15:{F1} から {F15}

こちらは以下の公式サイトを参考にしています。
https://learn.microsoft.com/ja-jp/office/vba/api/excel.application.onkey


こちらの内容を踏まえ、「Alt + F1」というショートカットキーを設定する場合は以下のようになります。

Application.OnKey "%{F1}", "test"

Enterキーのショートカットキーを活用したマクロはこちらの記事が参考になります。


という感じで、作成したマクロにショートカットキーを設定する方法については以上になります。

2022/12/25
【便利】Enterキーのみで入力

【便利】Enterキーのみで入力



YouTubeで開く

Enterキーのみで「OK」と入力する機能について解説しています。
Enterキーを押した後は、下のセルへ移動するように開発しているため、確認作業の効率化が図れます。

00:00 挨拶
00:09 完成イメージ
00:44 準備
01:05 作成(OK入力関数)
04:46 作成(Enter割り当て関数)
07:15 作成(Enter取り消し関数)
07:37 動作確認
08:25 作成(Enter動作の追加)
09:38 問題点の確認
10:13 作成(特定のシートのみ自動設定)
14:20 完成
15:19 プログラムの全体
20:22 まとめ

▼準備ファイル▼

2022/12/20
【便利】更新履歴を自動で管理する機能

【便利】更新履歴を自動で管理する機能



YouTubeで開く

Excelファイルの立ち上げ時と保存時に、自動で「編集者名・編集時間」を取得し、更新履歴を管理する機能です。

誰が更新して、誰が更新していないのかが簡単に確認できます。

00:00 挨拶
00:13 完成イメージ
01:08 準備
01:32 作成(ブックモジュール)
02:48 作成(実行者・実行日時の自動入力)
08:10 作成(更新日時の自動入力)
10:49 補足
11:16 完成
11:48 プログラムの全体
14:06 まとめ

▼準備ファイル▼

2022/12/16
【ex20】色んな日付の計算方法

【ex20】色んな日付の計算方法

色んな日付を求める方法について解説していきます。
給料日の算出や年齢の算出などに役立ちます。




・はじめに

はじめに、日付はどのようにExcelで管理されているのかを理解する必要があります。
日付をセルに入力すると、同時に表示形式が”日付”や”ユーザー定義”などに変わるかと思います。

ちなみに、”2022/1/1(土)”などと直接入力されているのを見たことがありますが、編集時に曜日まで編集が出来てしまうのであれば、日付として認識されていません。
これでは日付の計算ができないため、修正する必要があります。
もしセル内に曜日も表示したい場合は、そのような表示形式で”yyyy/m/d(aaa)”などを設定する必要があります。
表示形式の設定方法についてはこちらを参考にご確認お願いします。

日付で管理されている場合は、表示形式を”標準”などにすることで、日付の実体であるシリアル値を表示させることができます。

シリアル値は「ある日を基準にした通し番号」になります。
Excelでは、基本1900年1月1日を「1」として数えられています。

ちなみに時間は、24分の1で計算します。
つまり、”44562″が2022年1月1日の場合、”44562.25″は2022年1月1日の6:00を表していることになります。




・N日後やN日前を求める方法

日付がシリアル値で管理されていると解説しました。
日付の実体が数字であることから、通常の計算式が使えることが分かります。

そのため、1日後や1日前を求める場合は、足し算と引き算で求めることができます。

ちなみに、今日の日付を基準に計算したい時は、今日の日付のシリアル値を返すTODAY関数が使えます。
※「返す」という表現は関数を実行した結果を受け取ることを言います。

明日の日付を求めたい時は、「=TODAY()+1」で求めることができます。




・日付の差を求める方法(期限や年齢など)

単純な日付の差を求める場合は、引き算で求めることができます。
この時、正しく表示されない場合は、表示形式が影響している可能性があります。
以下の例では、黄色のセルの表示形式は”標準”にしています。

上記の方法は、日にちの場合には便利ですが、月や年で求める際には計算が複雑になってしまいます。
そんな時に使えるのがDATEDIF関数になります。
※DATEDIF関数は入力候補に表示されない特殊な関数になります。直接入力することで使えます。

使い方は、「=DATEDIF(開始日,終了日,単位)」になります。
便利な単位のみ紹介しますと以下になります。

※DATEDIF関数は特殊な関数で、いくつか注意する点があります。
 詳しくはこちらの公式サイトをご確認ください。

年齢を求める場合に関しては以下のように求めることができます。

他に、DATEDIF関数を使わずに年を求める方法も紹介します。

日付の年月日は、YEAR関数MONTH関数DAY関数で抽出することができます。
つまり、YEAR関数で年のみを抽出して引き算するという方法です。
ただ、単純な引き算ですと日にちなどが考慮されていないので注意する必要があります。




・特定の日付を求める方法(翌月5日など)

年月日をそれぞれ設定してシリアル値に変換するDATE関数を使います。
使い方は、「=DATE(年,月,日)」です。

基準日の翌月の5日を求める場合は以下のようになります。
※年月を別々で設定し、月に関してのみ+1して計算しています。

ちなみに、このDATE関数の月に「13」や「-1」など通常では存在しない値を設定したとしても、正しく計算されます。
日に関しても同様で大きすぎた分や小さすぎた分は年月に反映されます。
→つまり翌年は月に+12しても求めることができます。




・月末を求める方法

月末を求めるにはEOMONTH関数を使います。
使い方は、「=EOMONTH(開始日,月)」です。

ちなみに、先ほど解説したDATE関数でも求めることができます。
※日の「0」は1日より1日前として計算されます。




・N日後やN日前の営業日を求める方法

営業日(週末や休日を除いた日付)を求めるには、WORKDAY関数WORKDAY.INTL関数を使います。
WORKDAY関数の使い方は「=WORKDAY(開始日,日数,[祭日])」です。
こちらの関数は週末が土日で計算されます。祭日(休日)を設定しない場合は省略することができます。
WORKDAY.INTL関数の使い方は「=WORKDAY.INTL(開始日,日数,[週末],[祭日])」です。
こちらの関数はWORKDAY関数に加え、週末を自由に設定することができます。
週末の設定値は以下になります。
※省略時は土日として設定されます。

WORKDAY.INTL関数の方がWORKDAY関数に比べ汎用性があるため、こちらでは、WORKDAY.INTL関数で解説していきます。

例えば土・日を週末とし、土・日・休日を除いた3日後を求める場合、以下のようになります。
休日に関しては、引数の[祭日]に”L5:L9″と休日一覧の範囲を指定します。

次に、同じ条件で3日前を求めていきます。
引数の[日数]を負の値にすることで簡単に求めることができます。

次に週末を金・土・日にした場合の3日前を求めていきます。
週末の候補に金・土・日がないため、”0000111″と記述して求めていきます。




・特定の日付の直近の営業日を求める方法(翌月5日以降の直近の営業日など)

給料日などを求める際に、このような計算が必要になってくるかと思います。
指定日の直近の営業日を求めるにはDATE関数WORKDAY(WORKDAY.INTL)関数を組み合わせることで実現できます。

まず、土・日・休日に含まれる翌月の7日(2023/1/7)を求めます。

この求めた日付を元に、直近の営業日を求めます。
営業日を求める際に、WORKDAY(WORKDAY.INTL)関数を使います。
ただ、WORKDAY(WORKDAY.INTL)関数では0日後や0日前を指定することができません。
そのため、次の営業日を求める場合は、1日前から1日後を求めます。

先ほどのDATE関数の引数の[日]を”6″にして、DATE関数をそのままWORKDAY(WORKDAY.INTL)関数の引数の[開始日]に設定します。
そうすると、以下のように求めることができます。

では、前の営業を求める場合についても確認していきます。
先ほどの逆で求めることができるので、1日後から1日前というようにしていきます。

基準日が今日で来月の給料日(例えば、25日、土・日・休日の場合は、次の営業日)を求める場合は、以下のようになります。

以上が、色んな日付の計算方法になります。

2022/12/12
【業務】印刷履歴の管理シート

【業務】印刷履歴の管理シート



YouTubeで開く

印刷すると同時に、印刷日時を記録する機能について解説しています。
印刷履歴はシート単位で管理され、専用ボタンから印刷できるようになっています。
また、通常の印刷からは印刷できないように制御しています。
※マクロの許可がされていない状態ですと、印刷ができてしまうため、セキュリティを担保するものではありません。

00:00 挨拶
00:05 完成イメージ
01:07 準備
01:29 作成(印刷許可シート)
03:10 作成(印刷の制御)
05:36 作成(印刷許可シートの非表示)
08:07 作成(シート名の更新)
20:30 作成(印刷機能)
26:05 作成(実行ボタン)
27:04 完成
29:03 プログラムの全体
36:46 まとめ

▼準備ファイル▼

2022/12/05
【業務】シートの順番を好みに並べ替え

【業務】シートの順番を好みに並べ替え



YouTubeで開く

シートの順番を瞬時に昇順や降順、他、好みの順番に並べ替えできる「シート管理ツール」について解説しています。
複数のシートを扱うファイルを管理する際に役立ちます。

00:00 挨拶
00:06 完成イメージ
00:57 準備
01:27 作成(シート名取得関数)
07:54 作成(シート順番反映関数)
14:06 作成(取得・反映ボタン)
15:09 完成
16:12 プログラムの全体
21:03 まとめ

2022/12/03
【ex19】マクロ実行中にブックを操作

【ex19】マクロ実行中にブックを操作

マクロ(VBA)を実行している時の待機時間の効率化として、ブック(Excelファイル)を操作する方法について解説していきます。




・マクロ実行中にブックを操作できない理由

通常、マクロ(VBA)を実行している最中にExcelを操作することができません。
ブックを複数立ち上げると、通常は同じExcelアプリケーション上で複数のブックが立ち上げられます。
マクロの大元のVBAはExcelアプリケーションに紐づいています。

そのため、マクロを実行してExcelアプリケーションが待機している時間に関しては、他のブックであっても操作することができません。




・マクロ実行中にブックを操作するには?

マクロ実行中にブックを操作する方法には以下のようなものがあります。

・DoEvents関数を用いる
・別のアプリを立ち上げる

順に解説していきます。




・DoEvents関数を用いる

前者の「DoEvents関数を用いる」に関しては、少し専門的な内容になります。

マクロを実行している最中は、CPU上でExcelアプリケーションの処理をしていることになります。
この処理が完了しない限り、Excelアプリケーションの他の処理は実行できません。

>>CPUについて調べる(Google)

Excelを操作するという処理は、このCPUの中の「Excelアプリケーション」にて行われます。
そのため、Excelアプリケーションがマクロ処理を行っている時は操作ができなくなります。

ではどのようにしたらExcelの操作ができるようになるのかというと、
Excelアプリケーションでマクロを実行している間のExcel操作を他の処理に割り当てるという方法です。
※具体的に言うと、オペレーティングシステムにて処理させる方法です。

それがDoEvents関数になります。

例えば、以下のマクロ実行させるとしばらくの間、Excelが操作できなくなります。

Sub test()
    
    For i = 1 To 100000
        Range("A1").Value = i
    Next i
    
End Sub

これはセルA1に1~100000を順番に入力するというプログラムです。
この中に以下のようにDoEvents関数を入れてみます。

Sub test()
    
    For i = 1 To 100000
        DoEvents
        Range("A1").Value = i
    Next i
    
End Sub

このようにして実行すると実行中にExcelの操作ができるようになります。
DoEventsが実行されるタイミングにExcelを操作した内容がオペレーティングシステムで処理されるようになります。

CPUのExcelアプリケーションとは別に、処理を割り込ませるイメージです。

Excelの操作が、DoEventsが実行されるタイミングで行われる必要があるため、下記のように記述した場合は、Excelの操作が出来ません。

Sub test()
    
    DoEvents
    For i = 1 To 100000
        Range("A1").Value = i
    Next i
    
End Sub

また、無理やり割り込んで操作をしているため、予期せぬエラーが起こる可能性があります。
特にセルに文字を書き込む処理などはエラーが起こりやすいです。

        Range("A1").Value = i

また、エラーが発生した場合は処理が中断されてしまいます。
そのため、エラーにより処理が中断されないようにする必要があります。
エラーの対策として、エラーが発生した場合に無視をして実行するという方法があります。

それが「On Error Resume Next」になります。
これが実行されたプロシージャに関しては、プロシージャが終了するまでエラーが無視され続けます。
もし途中でエラーを無視したくなくなった場合は「On Error GoTo 0」を実行すると無効になります。

「On Error Resume Next」を活用した例が以下になります。

Sub test()
    
    On Error Resume Next
    
    For i = 1 To 100000
        DoEvents
        Range("A1").Value = i
    Next i
    
End Sub

DoEventsを記述するとDoEventsの処理が増えるため、比較的、処理が遅くなります。
処理の遅延だけですと、GetInputState関数(Win32API)を使うという方法もありますが、問題点は遅延だけではなく、想定外のエラーが起こりやすくなるという点もあります。
そのため、こちらの方法に関して「マクロ実行中にExcelで別の作業をする」という目的での使用は推奨できません。




・別のアプリを立ち上げる

後者の「別のアプリを立ち上げる」に関しては、実行中のブックの操作ができません。
別のブックを操作する方法になります。

その方法のイメージは、以下の図のようになります。

別のExcelアプリケーションの立ち上げ方について2つ紹介します。




【1つ目の立ち上げ方法】

WindowsキーとRキーを同時に押して「ファイル名を指定して実行」を立ち上げます。
※Windowsマークのスタートボタンを右クリックして「ファイル名を指定して実行」を選択することでも立ち上げられます。

「ファイル名を指定して実行」が立ち上がりましたら、「excel /x」と入力してEnterもしくは「OK」を押します。
※「excel」と「/x」の間には半角スペースがあります。

これで別のExcelアプリケーションを立ち上げることができます。
後は、操作したいブックをこちらから開くことでマクロの実行中にExcelを操作することができます。




【2つ目の立ち上げ方法】

Excelアプリケーションを立ち上げているとタスクバーにExcelのアイコンが表示されているかと思います。

このアイコンを、ShiftキーとAltキーを押しながら左クリックすると以下のようなメッセージが表示されます。

「はい」を選択することで、別のExcelアプリケーションを立ち上げることができます。
後は、操作したいブックをこちらから開くことでマクロの実行中にExcelを操作することができます。