返回列表 上一主題 發帖

VBA 設定輸入法(中英文鍵盤)

請問哪位大大指導一下
如何在VBA中設定變更輸入法的方法

謝謝先
Scott090 發表於 2015-4-8 15:47


以 Windows 8 來說可以這樣實現 : (XP 設定方式類似, 請自行參照設定)

TOP

本帖最後由 luhpro 於 2015-4-11 06:52 編輯

Sendkeys 巨集的陳述式

我的系統是 Win 7 搭配 Excel 2003 與 Excel 2013 測試過都可以正常運作喔.

因為我沒有 Win 8,
不能測試在Win 8中這些複合按鍵的反應是否有差別.

最簡單的確認方式是你可以開 Word:

'這個每執行一次就只會再狀態 A與B 交換,不會是能被掌握的狀態
    SendKeys "^ ", True

此項複合按鍵是 Ctrl + Space(空白鍵) , 功能是在 輸入英文模式 與 輸入中文模式 間來回切換.
之後直接在鍵盤上按著 Ctrl  鍵不放,
再按一下 空白 鍵,
接著放掉 Ctrl 鍵,
看輸入法切換是否正常,

'這個沒反應
    SendKeys "^+1", True

此項複合按鍵是 Ctrl + Shift + 1 , 依你的設定功能是切換到微軟注音.
或者按著 Ctrl  鍵與 Shift 鍵不放,
再按一下 1 按鍵,(數字鍵建議都使用鍵盤右邊數字鍵區中的按鍵, 左邊的數字鍵有時會有不同的意義)
接著放掉所有按鍵,
看輸入法是否有切換到微軟注音,
若沒反應可能是系統設定需要再做調整.

看圖說故事,
依你擷取的畫面我猜測,
你可以試試在後面那個  進階設定畫面 中,
切換輸入法 項下,
讓我為每個應用程式視窗...
將那個打勾 並套用後看看是否能正常切換.


'這個沒反應
    SendKeys "%+", True

這個沒反應是正常的,
%+ 是同時按下 Alt 與 Shift 按鍵,
沒有搭配同時按下其他按鍵不應該有反應.

回復  luhpro
    補充說明:
#4 內 3 段程式都會使 數字鍵盤的 NumLock 來回的 鎖定與釋放
Scott090 發表於 2015-4-9 14:29

這裡看不到你呼叫 KeyBoard 那些副程式的方式,
如果呼叫前後有迴圈那麼有可能執行數次 KeyBoard 副程式(按鍵好幾次了),
這一點也是需要確認的.

另外這一行:
Application.Wait Now + TimeValue("00:00:02")
可以通通用 ' 把它 Mark 掉,
因為 SendKeys  後面放 True,
已經會等到輸入狀態切換完畢才會繼續執行下去,
不需要再執行等待作業.

或者你也可以在 即時運算視窗 中輸入:
SendKeys "^ ", True
或
SendKeys "^+1", True
後按下 Enter 按鍵直接執行.
看輸入模式是否有正確切換過去,
若這裡不能正確切換,
那放進 VBA 程式碼中也不會正確切換.

TOP

        靜思自在 : 我們要做好社會的環保,也要做好內心的環保。
返回列表 上一主題