Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
can';t在MS excel VBA上检测阿拉伯语文本_Excel_Vba - Fatal编程技术网

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。请花些时间阅读,特别是“我可以在这里问什么话题?”和“我应该避免问什么类型的问题”部分。更重要的是,请阅读。您可能还想了解。