【EXCEL VBA】SendKeys

{HOME}でホームキーを押せるけど

CTRL+HOMEはどうするのか?

無理なのかと思ってたら

最近のMSDNオンラインにはこっそりとこう書かれています。

Shift キーを押したまま、E キー、C キーを順に押すには、”+(EC)” と指定します。

https://msdn.microsoft.com/ja-jp/library/cc364423.asp

つまり、”+({HOME})” なのだそうです。

SendKeys “+({HOME})” と  SendKeys “^+({END})”  それに DoEvents も

付けるとワークシートの全データを範囲指定できます。

DoEventsが無いと、画面の反映を完了しないので、続きのVBAコマンドが悲しい結果を引き起こします。

また行や列などをロックしている場合、ロックしている範囲は範囲指定できませんので、結局操作マクロの記録結果をそのまま使って

Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
With Selection.Font
    .ColorIndex = xlAutomatic
    .TintAndShade = 0
End With

で、赤字を外す方が良さそうです。

古いEXCELも同じ操作マクロを記録しますが、そのままマクロを実行すると、ColorIndexに対してxlAutomaticを代入するところで範囲外エラーになってしまいます。これは、WindowsUpdateでxlAutomaticの値が変化してしまったのでしょうね。しょうもないバグですが、直してくれる訳が無いので、自分でxlNoneに書き換えるしかありません。





コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA