can';t在MS excel VBA上检测阿拉伯语文本
我正在努力从手机中检测阿拉伯语文本 我正在写一个程序,从字母数字的阿拉伯文本中检测阿拉伯数字 不幸的是,我无法得到它 如果单元格只包含阿拉伯数字,那么我可以得到它,但是如果单元格中的值是字母数字, 然后将其视为整个字符 该计划是:can';t在MS excel VBA上检测阿拉伯语文本,excel,vba,Excel,Vba,我正在努力从手机中检测阿拉伯语文本 我正在写一个程序,从字母数字的阿拉伯文本中检测阿拉伯数字 不幸的是,我无法得到它 如果单元格只包含阿拉伯数字,那么我可以得到它,但是如果单元格中的值是字母数字, 然后将其视为整个字符 该计划是: Sub ReverseText() Dim Rng As Range Dim WorkRng As Range On Error Resume Next xTitleId = "KutoolsforExcel" Set WorkRng = Application.Se
Sub ReverseText()
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
xValue = Rng.Value
xValue = " " & xValue
xLen = VBA.Len(xValue)
xOut = ""
yOut = ""
'Trying to reverse the arabic char
For i = 1 To xLen
getchar = VBA.Right(xValue, 1)
'Checking if String contain numbers or not
If IsNumeric(getchar) Then
xValue = VBA.Left(xValue, xLen - i)
yOut = getchar & yOut
'If not numers then check for decimal point
Else
If getchar = "." Then
xValue = VBA.Left(xValue, xLen - i)
yOut = getchar & yOut
'xOut = xOut & yOut
getchar = ""
'If not numbers then check for char other than numbers
Else
xValue = VBA.Left(xValue, xLen - i)
xOut = xOut & yOut
xOut = xOut & getchar
yOut = ""
End If
End If
Next
Rng.Value = xOut
Next
End Sub
单元格中的值为:
ARABIAN COLA CAN 355ML X 20
运行程序后,输出应为:
20 X LM355 NAC ALOC NAIBARA
这是用英语写的,而且工作正常。
现在用阿拉伯语
单元格中的值为:
٦*ﻝﻣ٣٥٥ﻛﺎﻣ ﻲﺳﺑﺑ
以及该程序的输出:
ﺑﺑﺳﻲ ﻣﺎﻛ٥٥٣ﻣﻝ*٦
字母表正确地颠倒了方向,但数字也颠倒了方向,这是不应该的
我需要输出类似的英文文本之一。
但该程序并没有检测到阿拉伯数字
我正在使用excel2011 mac
我也在Windows7上试过,但也有同样的问题
有人能帮我吗?说我对阿拉伯语一无所知(如果我说了一些没有意义的话,很抱歉),函数
IsNumeric()
只将数字0-9识别为数字
我的建议是开发并添加您自己的IsArabNumeric()
函数。首先,您可以将数字复制并粘贴到工作表的某个范围内,假设您将其放入工作表MySheet
的范围A1:A10
。然后,函数将如下所示:
Public Function IsArabNumeric(ByVal char As String) As Boolean
For j = 1 To 10
If Sheets("MySheet").Range("A" & j).Value = char Then
IsArabNumeric = True
Exit Function
End If
Next j
IsArabNumeric = False
End Function
因此,与其进行此检查,不如:
'Checking if String contain numbers or not
If IsNumeric(getchar) Then
您可以这样做,它应该可以工作:
'Checkin if String contain arabic numbers or not
If IsArabNumeric(getchar) Then
请注意:可能有更优雅的方式,例如查看集合的哪个位置
Chr()
阿拉伯数字并在其中循环,而不必将这些值复制粘贴到单独的表格中(从编码的角度来看,这并不是很优雅)。。。但这只是一个提示,你可以自己看看,重新适应这个想法 说我对阿拉伯语一无所知(如果我说了一些没有意义的话,那么很抱歉),函数IsNumeric()
只将数字0-9识别为数字
我的建议是开发并添加您自己的IsArabNumeric()
函数。首先,您可以将数字复制并粘贴到工作表的某个范围内,假设您将其放入工作表MySheet
的范围A1:A10
。然后,函数将如下所示:
Public Function IsArabNumeric(ByVal char As String) As Boolean
For j = 1 To 10
If Sheets("MySheet").Range("A" & j).Value = char Then
IsArabNumeric = True
Exit Function
End If
Next j
IsArabNumeric = False
End Function
因此,与其进行此检查,不如:
'Checking if String contain numbers or not
If IsNumeric(getchar) Then
您可以这样做,它应该可以工作:
'Checkin if String contain arabic numbers or not
If IsArabNumeric(getchar) Then
请注意:可能有更优雅的方式,例如查看集合的哪个位置
Chr()
阿拉伯数字并在其中循环,而不必将这些值复制粘贴到单独的表格中(从编码的角度来看,这并不是很优雅)。。。但这只是一个提示,你可以自己看看,重新适应这个想法 大家好,欢迎来到StackOverflow。请花些时间阅读,特别是“我可以在这里问什么话题?”和“我应该避免问什么类型的问题”部分。更重要的是,请阅读。您可能还想了解。您好,欢迎来到StackOverflow。请花些时间阅读,特别是“我可以在这里问什么话题?”和“我应该避免问什么类型的问题”部分。更重要的是,请阅读。您可能还想了解。