ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   2-byte characters: from VBA code to a worksheet; in MsgBox prompts (https://www.excelbanter.com/excel-programming/399818-2-byte-characters-vba-code-worksheet%3B-msgbox-prompts.html)

Jo

2-byte characters: from VBA code to a worksheet; in MsgBox prompts
 
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

Smallweed

2-byte characters: from VBA code to a worksheet; in MsgBox prompts
 
Looks like a solution is in the thread "Korean script compatibility with Vba"
- might be worth searching this forum for that.

"jo" wrote:

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


Jo

2-byte characters: from VBA code to a worksheet; in MsgBox pro
 
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.

"Smallweed" wrote:

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

"jo" wrote:

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



All times are GMT +1. The time now is 08:44 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com