Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Excel 2016)
OnKeyで全角・半角のまま引数に渡す方法
投稿日時: 19/10/10 12:57:30
投稿者: あべ

お世話になります。
 
現在、Onkeyからショートカット作成し、面倒な入力をVBA上から行うことをしようとしています。
しかしOnkey上で引数として渡す文字列に全角の記号があると、自動的に半角されてしまいます。
 
この対策についてご存じの方いらっしゃいましたらお教え頂きたくお願いいたします。
 
以下、キーボード:a にマクロを割り当てています。
 
==============================================

Sub TEST_A()
    
    Dim str As String
    
    'str = "ABCDEF" & vbCrLf & "ABCDEF"
    str = "##"

    
    Application.OnKey "a"
    Application.OnKey "a", "'TEST_B" & Chr(34) & str & Chr(34) & "'"
    
End Sub

 
aで実行されるマクロ
Sub TEST_B(str As String)

    MsgBox str
    Debug.Print str & vbCrLf & [LENB( " & str & ")]

End Sub

 
 
実現したいのは、上記のTEST_Aで変数STRに入ったままの文字をそのまま引数として渡したいです。
 
(プランBとして、変数ではなくセルに値を書き込んでおき、
その値を使って処理させることはできそうですが、
シンドさが増しまして・・かわす方法あればと思いまして・・)
 
※数値、アルファベットなど半角化される上に、バイト数の確認もうまく取得できずです。
引数を変えても、なぜかバイト数は固定値「9」が表示され続けます。。
 
Onkeyのバグの気もするんですが、ご存知の方いらっしゃいましたらお願いします。

回答
投稿日時: 19/10/10 17:15:18
投稿者: sk

引用:
Sub TEST_A()
     
    Dim str As String
     
    'str = "ABCDEF" & vbCrLf & "ABCDEF"
    str = "##"
 
     
    Application.OnKey "a"
    Application.OnKey "a", "'TEST_B" & Chr(34) & str & Chr(34) & "'"
     
End Sub

'モジュールレベルで宣言
Public varValue As Variant
 
Sub TEST_A()
     
    varValue = "ABCDEF" & vbCrLf & "ABCDEF"
 
    Application.OnKey "a", "'TEST_B(varValue)'"
     
End Sub
 
引用:
引数を変えても、なぜかバイト数は固定値「9」が表示され続けます。。

引用:
Debug.Print str & vbCrLf & [LENB( " & str & ")]

Debug.Print str & vbCrLf & LenB(StrConv(str, vbFromUnicode))

トピックに返信