2012年11月30日金曜日

Excel VBAで勝手にIMEが無効になってしまう

フォームのEnabledプロパティをFalseにすると、IMEが無効になってしまう。
Office2007以降でおきてるらしい。

IMEが無効になると、マクロが終了しても復帰せず、Excelで日本語入力ができなくなった。
他のアプリでは使える。
なんでだろう?

とりあえず、Excelを終了させればいいが、根本的に解決するには、
フォームを非表示にする(hideメソッド)とかすれば大丈夫らしい。

まぁ、表示中のフォームを無効にするなということか…

2012年9月26日水曜日

Excel VBA 二つのTrim

Trim()とApplication.WorksheetFunction.Trim()があり、それぞれで動作が違っている。

Trim("  A  B  ") → "A  B" になり、
Application.WorksheetFunction.Trim(" A B ") → "A B" となる。

違いがわかりにくいけど、上は純粋に左右のスペースを取り除く。
下は、左右のスペースを取り除くだけでなく、文字の間の連続したスペースをひとつにしてしまう。

下のほうはセルの中で使うTrimと同じです。

なんだかなぁ・・・