
http://okwave.jp/qa/q4890392.html
MsgBox関数は半角で最大1024文字しか扱うことができないようです。
これ以上の文字数を扱いたいのですが
恐らくWindows APIを使えばできるのではないかと考えました。
APIを使った方法は
http://www.ne.jp/asahi/hishidama/home/tech/excel …
http://soudan1.biglobe.ne.jp/qa6488258.html
この辺りに書かれてあります。
それで
Declare Function MessageBoxPtr Lib "user32.dll" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal text As Long, ByVal caption As Long, ByVal nType As Integer) As Integer
Sub aaa()
Dim text() As Byte
Dim caption() As Byte
Dim ret As Integer
caption() = StrConv("dd7優勝a", vbFromUnicode)
text() = StrConv("b日本aaa", vbFromUnicode)
ret = MessageBoxPtr(0, VarPtr(text(0)), VarPtr(caption(0)), vbOKOnly)
End Sub
を実行してみたのですが
なぜか全角文字と半角文字を両方含んでいると
文字化けしてしまいます。
しかもなぜか実行するたびにその文字化けが変化していきます。
例えば以下のようです。
b日本aaawPAセ
b日本aaaユ君・
優勝{aaaユ君・
b日本aaa蛹N・
VarPtrがメモリのアドレスを取得する関数なそうなのですが
これがリセットされていないことが原因なのでしょうか?
一体どうすれば正常に取得できるか教えていただけないでしょうか?
ちなみに環境はWin8 Excel2010です。
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
MessageBoxPrt が、半角・全角混在で、できないなら、元のMessageBox でやってみたらいかがですか?
Private Declare Function MessageBox Lib "User32.dll" Alias "MessageBoxA" ( _
ByVal hWnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal uType As Long) As Integer
と書いて気が付きました。#1様の示されたリンク先と同じですよね。
ただ、Form などでTextBox に、スクロールを付けて使ったほうが便利そうです。
No.1
- 回答日時:
こちらの
https://oshiete.goo.ne.jp/qa/4876776.html
#4さんの回答では?
試してみたところ、
lpText = "テスト" を
lpText = "始め" & String(1200, "@") & "最後"
では『始め』の後で改行?が入りました
"@" を "@" と全角にすると消える?
残念ながら、当方これ以上わかりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Msgboxで表示できる文字数の上限は939文字ですか?
Word(ワード)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
VBAにてメッセージボックスを最前面に表示させる
その他(プログラミング・Web制作)
-
-
4
エクセルVBAによりメッセージボックスを表示させた場合について
Excel(エクセル)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
VBAで文字を反映させると255文字の制限になってしまいます。
Visual Basic(VBA)
-
7
ウォッチ式の文字数制限について
Visual Basic(VBA)
-
8
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
9
VBAのプログラムで、DIAG = 1# / A(L, L) や R(
その他(プログラミング・Web制作)
-
10
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
11
private subモジュールを他のモジュールから呼び出して使う方法を教えてください(-.-)
Visual Basic(VBA)
-
12
フォントの大きさ
Visual Basic(VBA)
-
13
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
14
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
15
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
16
VBA 置換文字がみつからない時
Visual Basic(VBA)
-
17
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
18
Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない
Excel(エクセル)
-
19
マクロを実行中に、msgbox を表示させたまま、ワークシートを上下左右に移動表示させたい。
Excel(エクセル)
-
20
エクセルVBAでMsgboxの表示をそろえたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessの文字数を調べたい
-
文字の入力で横バー上段、中断...
-
全角英数文字が嫌われる理由を...
-
全角括弧と全角読点の間隔を狭...
-
全角カタカナの正規表現
-
入力データ「英数字」と「アン...
-
XMLのタグ名の禁則文字
-
メッセージボックスで1025文字...
-
Postgresの特定のカラムからス...
-
文字化け変換方法
-
VBAのコマンドボタンの文字列の...
-
文字列を文字コードの数値に変...
-
FTP受信する際、改行コードをは...
-
fgetws関数で読み込んだUNICODE...
-
ソースコードの1行が長いとき...
-
JSPでCSVのダウンロード処理
-
C#における改行を含む文字の探索
-
アスキーコードへの変換につい...
-
CSVファイルの読み込み
-
改行コード2種類を混在させたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PPT ファイルの文字カウント=...
-
文字の入力で横バー上段、中断...
-
エクセルのCOUNTIFが正しくカウ...
-
メッセージボックスで1025文字...
-
Excel関数「COUNTIF」で”文字”...
-
全角括弧と全角読点の間隔を狭...
-
Accessの文字数を調べたい
-
VBAで英数字入力チェックしたい。
-
XMLのタグ名の禁則文字
-
エクセルでの漢字、カタカナ、...
-
全角英数文字が嫌われる理由を...
-
Replace関数は文字数の制限ある...
-
なぜインターネットでは半角カ...
-
=code(" ") で値が160となる文...
-
記号は半角と全角どちらがよい...
-
VBのソース検索で、コメントア...
-
マクロできる方教えてください...
-
半角文字と全角文字の判別の仕方
-
全角半角混在の文字列から○文字...
-
ショートメールの文字数
おすすめ情報