Excelの覚書き(Windows3.1/95)
プロジェクトのページへ
不連続なデータをグラフ化したとき、連続に線を引く
- 散布図でよくあることですね。
まず、そのグラフを描きます。
次にそのグラフをダブルクリックして編集しようとします。
「ツール」メニューの「オプション」を選び、でてきたダイアログの なかの「グラフ」タブを選びます。
左上の方で欠けたデータをどう補間するかが選べるので、適切なものを 選んで、「OK」を押します。
ダイアログが閉じ、グラフが書き換えられています。
これはグラフごとにいちいち設定する必要があるようです。面倒です...
m2などの上付き文字を入力する
- まず、m2というふうに入力しておきます。
「2」だけを選択(反転表示)しておいて、「書式」メニューの 「セルの書式...」を選びます。
現れたダイアログのなかの「フォント」タブを選ぶと、上付き文字に するためのチェックボックスがあります。それをチェックして(×にして) 「OK」を押すと、「2」だけが上付き文字になります。
メモリ不足で終了してしまう(Win3.1)
- Windowsを一旦終了して、再び起動してください。
なぜメモリ不足になるのかはわかりませんが、こうなってしまうとWindowsを 再起動させるまで、Excelを起動することができないようです。潔くWindowsを 再起動させてください。なお、会社のパソコンの場合は、Windowsだけでなく、 パソコンそのものも再起動してください。
です。
- 再起動の方法は、Windowsを終了した後に、
- Windowsだけを再起動する場合は、win、と入力する。
パソコンも再起動する場合は、電源を切って、2秒待って、 また電源を入れる。
Excelのマクロ(VBA)の高速化(Windows3.1/95)
スクリーンセーバーを「なし」にする。
- 時として、スクリーンセーバーが速度のボトルネックになっている 場合があります。
DoEventsを全く使用しないことでスクリーンセーバーを 働かせなくできそうですが、実際には働く場合もあります(後述)。 ですから、止める場合は、Win3.1ならばコントロールパネルの「画面」、 Windows95では画面のプロパティでスクリーンセーバーを「なし」にする 必要があります。
自動再計算をOFFにする。
- Calculationプロパティを使います
例:
Dim CalcMode as Integer
これで初めの計算モードを記憶してからマニュアル計算モードに切り替えて、 最後に元のモードに戻せます。途中では、Caliculateメソッドで手動再計算 ができます(F9キーを押すのと同じ)。
CalMode = Application.Calculation
Application.Calculation = xlManual
〜
Caliculate
〜
Application.Calculation = CalcMode
セルのカットやコピーを行う場合、手動再計算させてからでないと、 意味のないことに注意してください。
一部の再計算でなく全体を再計算する。
- 全体を再計算したほうが圧倒的に速い場合があります。
画面の表示の更新を行わない
- グラフに対するマクロでは重宝します。
とくに複数のグラフを連続して描く場合等には欠かせません。
Application.ScreenUpdating = False
で表示が更新されなくなります。 表示を更新させるには、手動更新に相当する機能はないようなので、 適宜プロパティを戻すことで更新させます。
Application.ScreenUpdating = True
です。
Falseのときは自動再計算もOFFになるようです。Caliculateも効かないはず。 セルのカットやコピーを行うときは注意してください。
DoEventsを減らす。
- 他のプロセスに制御を渡さなくなるので実行速度が上がります。
副作用として、Windows3.1では、他の作業がしにくくなることを覚悟してください。 (スクリーンセーバーを「なし」にし忘れたことに気がついても、なにも できません) Windows95ではまったく使わなくても問題ないようです。と言うか、 他プロセスに制御を渡さないということが不可能です。
Excelのマクロ(VBA)覚書き(Windows3.1/95)
アクティブなファイル名を知る方法
- ActiveWindowプロパティで知ることができます
Excelは開いたファイル名がウィンドウの名前と同じです
例:シート上のボタンに登録されたマクロの冒頭部分に
Dim CurrentWindow
を書いておくと、ボタンが押されたファイル名を覚えておけます。
CurrentWindow = ActiveWindow
たくさんのファイルのボタンに同じマクロを登録しておいても、 名前を変えて保存されても、必ず、 ボタンが押されたファイルを特定できます。
DoEventsがなくても他のプロセスに制御が移る
- Windows3.1でのみの問題となります
Win3.1では、DoEventsがなければ他のプロセスに制御が移らず、 スクリーンセーバーも動かないように思えますが、例外があります。 Input#、Print#でファイルを読み書きしているときは他のプロセスに 制御が移っているようです。推定なのは、どこにも誰にも聞いていない からです(笑) だから、他にもそういう場合があるのかもわかりません。
このため、DoEventsの全くないマクロでもスクリーンセーバーが働きます。 Windows95ではDoEventsがあってもなくても他のプロセスに制御が移る というのが特徴のはずなので、気にしても無意味でしょう。
Dirメソッドのバグ
- Excel97でもあいかわらず直っていない。
Dirメソッドでディレクトリの名前を得ることができるとなっていますが、 実際にはファイルの名前も得てしまいます。そこで得た名前が本当に ディレクトリなのかをいちいちGetAttrメソッドで確認する必要があります。例:サブディレクトリがあったら別のSubを呼ぶ
Dim Path as String , SubDir as String
Excel97なら、ヘルプにも例があるそうです。
Dim FilAttr as Integer
Path = "C:\"
SubDir = Dir(Path , vbDirectory)
Do Until SubDir = ""
If SubDir <> "." And SubDir <> ".." Then
FileAttr = GetAttr(Path & SubDir)
If FileAttr = vbDirectry Then
〜
End If
End IF
Loop
ちなみに、Excel97でもvbFolderではなくてvbDirectryだそうです(笑)
プロジェクトのページへ