gpt4 book ai didi

Excel 宏,读取带有波斯文文本的单元格

转载 作者:行者123 更新时间:2023-12-04 21:40:50 33 4
gpt4 key购买 nike

我创建了一个简单的 Excel 工作表。

这是我的宏代码:

Sub MyMacro()
Sheets("Sheet1").Select
A$ = Cells(1, 1)
MsgBox (A$)
End Sub

如果单元格 1,1 包含英文单词或数字,则它可以正常工作。

但是当我将一些波斯语/阿拉伯语文本放入单元格 1,1(例如: سلام )并运行宏时,宏显示 ???? . (它显示 ? 而不是每个波斯字符)

如何解决这个问题呢?

最佳答案

您可以改用 Windows API 消息框,它应该显示大多数编码类型

例如,这进入 MODULE

Option Explicit

#If Win64 Then
Private Declare PtrSafe Function User32MsgBox Lib "user32" Alias "MessageBoxW" _
(Optional ByVal hWnd As Long, Optional ByVal Prompt As Long, _
Optional ByVal Title As Long, Optional ByVal Buttons As Long) As Long

#Else
Private Declare Function User32MsgBox Lib "user32" Alias "MessageBoxW" _
(Optional ByVal hWnd As Long, Optional ByVal Prompt As Long, _
Optional ByVal Title As Long, Optional ByVal Buttons As Long) As Long

#End If


Public Function MessageBoxW(cPrompt As String, _
Optional cButtons As VbMsgBoxStyle = vbOKOnly, _
Optional cTitle As String) As Long

MessageBoxW = User32MsgBox(0, StrPtr(cPrompt), StrPtr(cTitle), cButtons)
'*****Probably need to convert StrPtr to 32bit long on 64bit - see next line
'MessageBoxW = User32MsgBox(0, cLng(StrPtr(cPrompt)), CLng(StrPtr(cTitle)), cButtons)

End Function



Sub MyMacro()
Dim txt As String
txt = Sheets("Sheet1").Cells(1, 1).Value
MessageBoxW (txt)
End Sub

我目前没有 64 位机器,因此您可能需要在 64 位机器上将 StrPtr 转换为 32 位 Long

关于Excel 宏,读取带有波斯文文本的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12141024/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com