VBAでのWindows API関数EnumWindowsの定義は下記になっています。
Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
そこで、コールバック関数(lpEnumFunc)へのパラメータ(lParam)に文字列を指定したくて定義を下記のように変更しましたが旨く行きません。(定義をこのように変更することが許されているかも分っていませんが)
変更前:ByVal lParam As Long
変更後:ByRef lParam As String
EnumWindowsのコールバック関数へのパラメータに文字列を指定する方法があれば教えて頂きたくよろしくお願いします。
No.2ベストアンサー
- 回答日時:
ByRef lParam As String
じゃなくて
ByVal lParam As String
じゃないとダメなんじゃないかと思います。
あと、文字列はそのままではダメみたいです。
EnumWindows AddressOf EnumWindowProc, StrConv("hoge",vbUnicode)
みたいにしないと文字化けしてしまいました。
教えて頂いたとおりの修正で旨くいきました。
Long型のlParamでのコードが、これですっきりした分り易いコードとすることができました。
早速回答頂きありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
Excelで3E8を3.00E+8にしない方...
-
Excelで指数表現しないようにす...
-
文字列からタブコードを取り除...
-
エクセルで文字列の最大値を抽...
-
Left関数とRight関数を合わせた...
-
MS SQLServer のSQLで文字列の...
-
エクセルで文字列をtxtファイル...
-
VBAでの Replace関数で、ワイル...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
エクセル 数値データを桁をそ...
-
VBの「As String * 128」とは?
-
Pro c/c++ でホスト変数の後に....
-
[C言語]fputsとfprintfの違い
-
C言語で文字列の中の文字列のカ...
-
VBScriptでEUC文字列をSJIS文字...
-
Msgboxの×が押されたとき
-
16進数を10進数に簡単に変換す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
Excelで指数表現しないようにす...
-
エクセルで文字列の最大値を抽...
-
エクセル 数値データを桁をそ...
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
sedなどで、特定の文字列の後の...
-
MS SQLServer のSQLで文字列の...
-
Left関数とRight関数を合わせた...
-
Msgboxの×が押されたとき
-
アクセスで特定の数字以外(複...
-
【Excel VBA】複数ある特定の文...
-
エクセルでセル内の文字列の最...
-
C#で年月を比較する
おすすめ情報