2-byte characters: from VBA code to a worksheet; in MsgBox prompts

J

jo

Hi,
If filling cells from VBA code with a string containing 2-byte characters
(Central European), the result is corrupted characters in worksheet cells.
eg.

sheet1.cells(1,1).value = "Ä1Å¥2Ä3ň4ľ5" results in è1Â2ï3ò4¾5 in a cell

Related topic is using 2-byte characters in MsgBox prompts. If controls are
drawn in the VBA editor this can be prevented by setting appropriate script,
however I do not know how to do it with "common" msgboxes defined in a
simpliest way eg.
msgbox "Ä1Å¥2Ä3ň4ľ5" or with dynamic captions of controls which seem to
overwrite the default script of respective control's caption.

Storing strings somewhere in cells and copying the values from cells to
cells does work but I hope there is some smoother way how to solve it.
Moreover this way does not work with msgbox prompts resp. it converts all
characters into 1-byte characters (in given example c1t2d3n4l5)

Thanks in advance for help
 
S

Smallweed

Looks like a solution is in the thread "Korean script compatibility with Vba"
- might be worth searching this forum for that.
 
J

jo

Thanks it really is, unfortunately I am not familiar with calling APIs. Tried
to find something about using APIs and downloaded the Win32API but feeling
lost in the topic...;-/
Found two "suspicious" APIs for solving MsgBox issue -
Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As
Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long)
As Long

and

Declare Function MessageBoxEx Lib "user32" Alias "MessageBoxExA" (ByVal hwnd
As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal uType As
Long, ByVal wLanguageId As Long) As Long

but not aware of the way to pick the correct one and use it.
Concerning the passing strings from VBA code into cells I don't even know,
what I should look for in Win32API...;-(

Grateful for any shortcut to the solution.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top