vbaエディタでマウスホイールがきかない

下記引用
ダウンロード先はこちら

1.VB6MouseWheel.EXE パッケージをダウンロード。

2.ダウンロードしたファイルをダブルクリックして解凍先を指定。
(最初にインストール先を指定するも良し、後で解凍したフォルダを適当な場所へ移動するもよし。そのアドレスは次で引用)

3.[スタート]−[ファイル名を指定して実行]
 regsvr32 <フォルダパス> VB6IDEMouseWheelAddin.dll

4.先ほどのフォルダ内のVBA Mouse Wheel Fixをダブルクリック
  →レジストリに登録してくれる(気付かんと手動でやっとったがな!)。
   内容は以下の通り。

   HKEY_CURRENT_USERSoftwareMicrosoftVBAVBE6.0AddinsVB6IDEMouseWheelAddin.Connect

   キー名       値
  FriendlyName   MouseWheel Fix ←文字列
  CommandLineSafe  00000000    ←dword値
  LoadBehavior   00000000    ←dword値

5.Excelを起動 → [ツール]−[マクロ]−[Visual Basic Editor]

6.[アドイン]−[アドイン マネージャ]−利用可能なアドインのうち[MouseWheel Fix]をクリック

7.[ロード/アンロード] チェック ボックスをオンにし、[起動時にロード] チェック ボックスをオンに。
 → [OK]

マウスホイールをくりくりすると画面がスクロールするようになります!

久々に、vbaでプログラム作った。

すっかり忘れて、レスポンスがかなり悪かった。

とりあえずはまった所。

vbaでゴリゴリプログラム書くときは大抵、Rangeの指定はCells使って

For i = 0 To 10
    Range(Cells(1, i), Cells(2, i)).mergecells = true
Next

みたいに書く。
ひとつのbookでいろいろやる場合はあまり関係ないが、何個かbook開いてセル参照して
見たいな事やると上のような感じでは駄目。

For i = 0 To 10
    Workbook.WorkSheets(1).Range(Cells(1, i), Cells(2, i)).mergecells = true
Next

みたいに書く。
でも、上記では思い道理に動かない。


なぜ!?

これで、一時間くらい悩んだ。

Cellsの指定がまずかった。
正しくは

With Workbook.WorkSheets(1)
    For i = 0 To 10
        .Range(.Cells(1, i), .Cells(2, i)).mergecells = true
    Next
End With

こうだ。つまり、さっきはThisWorkbookのCellsを参照していた!?
(CellsプロパティーではなくCells関数を使ってた!?)


やっぱなれない言語は疲れます。