Dim iter As Lon"/>

关于Excel VBA:如何遍历字符串并检查每个字符的字节值?

关于Excel VBA:如何遍历字符串并检查每个字符的字节值?

How to iterate through a string and check the byte value of every character?

代码我有:

1
2
3
4
5
6
7
cell_val = CStr(Nz(fld.value,""))
Dim iter As Long
For iter = 0 To Len(cell_val) - 1 Step 1
    If Asc(Mid(cell_val, iter, 1)) > 127 Then
        addlog"Export contains ascii character > 127"
    End If
Next iter

此代码无效。 有人知道怎么做吗? 我完全不了解VB或VBA。


我相信您的问题是在VBA中,字符串索引从1开始而不是从0开始。请尝试以下操作:

1
2
3
4
5
For iter = 1 To Len(cell_val)
    If Asc(Mid(cell_val, iter, 1)) > 127 Then
        addlog"Export contains ascii character > 127"
    End If
Next

使用VBA,VB6,您只需声明一个字节数组并为其分配一个字符串值,它将为您转换。然后,您可以像常规数组一样遍历它。

例如

1
2
3
4
5
6
7
8
9
Dim b() as byte
Dim iter As Long
b = CStr(Nz(fld.value,""))

For iter = 0 To UBound(b)
    if b(iter) > 127 then
        addlog"Export contains ascii character > 127"
    end if
next


您的示例应进行修改,使其不具有外部依赖关系,现在它依赖于Nz和addLog。

无论如何,这里的问题似乎是您从0循环到len()-1。在VBA中,该值为1到n。

1
2
3
4
5
6
7
8
9
 Dim cell_val As String
 cell_val ="?abcd???~!#%&/()"
 Dim iter As Long
 For iter = 1 To Len(cell_val)
    If Asc(Mid(cell_val, iter, 1)) > 127 Then
       'addlog"Export contains ascii character > 127"
       Debug.Print iter,"Export contains ascii character > 127"
    End If
 Next iter

Did you debug it? ;) Are you sure the
cell_val is not empty? Also you don't
need the 'Step 1' in the For loop
since it's default. Also what do you
expect to acomplish with your code? It
logs if any ascii values are above
127? But that's it - there is no
branching depending on the result?

我没有调试它,我也不知道如何使用vba或它附带的任何工具。
是的,我确定cell_val不为空。
该代码具有代表性,在编写分支本身之前,我确保分支条件有效。

I believe your problem is that in VBA string indexes start at 1 and not at 0.

嗯,我一定会错过与vba一起出现的确切内容,谢谢。


VB / VBA字符串基于1而不是0,因此您需要使用:

1
For iter = 1 To Len(cell_val)

我还保留了step 1,因为这是默认设置。


试试AscW()


你调试了吗? ;)您确定cell_val不为空吗?另外,由于它是默认设置,因此不需要For循环中的"步骤1"。您还希望代码完成什么?它记录是否有大于127的ascii值?就是这样-没有分支取决于结果吗?


推荐阅读

    linux输出字符串命令?

    linux输出字符串命令?,标准,基础,字符串,资料,简介,商业,数字,系统,命令,汉

    linux命令替换的字符?

    linux命令替换的字符?,命令,数据,系统,商业,字符串,文件,内容,方法,批量,字

    linux命令行字符隐藏?

    linux命令行字符隐藏?,系统,标准,信息,名称,代码,工具,文件夹,命令,文件,语

    linux转换字符集命令?

    linux转换字符集命令?,系统,名称,时间,位置,服务,文件,字符集,命令,格式,以

    linux字符动画命令?

    linux字符动画命令?,工作,系统,地址,信息,命令,目录,工具,时间,标准,基础,Lin

    linux命令遍历月份?

    linux命令遍历月份?,系统,工作,命令,基础,信息,管理,工具,目录,标准,网络,Lin

    linux检查硬盘的命令?

    linux检查硬盘的命令?,系统,信息,检测,情况,命令,工具,电脑,地址,设备,硬盘,l

    字符串查找命令linux?

    字符串查找命令linux?,系统,字符串,工具,信息,文件,命令,字符,选项,文本,范

    linux命令替换字符串?

    linux命令替换字符串?,字符串,文件,批量,首次,数据,命令,内容,方法,用字,结

    linux命令中转义字符?

    linux命令中转义字符?,标准,本行,密码,字符,电脑,系统,环境,数据,命令,终端,l

    linux命令行字符颜色?

    linux命令行字符颜色?,系统,地址,代码,信息,数字,软件,通用,电脑,颜色,命令,l

    linux彩色字符命令?

    linux彩色字符命令?,数字,颜色,命令,字符,文字,终端,控制台,环境变量,白色,

    linux中替换字符命令?

    linux中替换字符命令?,工作,地址,系统,命令,资料,数据,信息,商业,管理,目录,L

    linux检查挂载命令?

    linux检查挂载命令?,设备,系统,信息,情况,状态,服务,软件,命令,磁盘,网络,lin

    linux遍历文件命令?

    linux遍历文件命令?,系统,数据,工具,文件,平台,信息,百度,位置,时间,适当,lin

    linux拼接字符串命令?

    linux拼接字符串命令?,系统,工作,代码,工具,名称,信息,地址,时间,数据,命令,l

    linux图形转字符命令?

    linux图形转字符命令?,系统,电脑,密码,界面,情况,地方,工具,图形界面,字符,

    linux隐藏字符的命令?

    linux隐藏字符的命令?,工作,地址,系统,发行,信息,标准,管理,命令,目录,文件,

    linux命令行最大字符?

    linux命令行最大字符?,系统,工作,数字,地址,等级,设备,软件,信息,标准,设计,l

    添加字符串命令linux?

    添加字符串命令linux?,情况,名称,文件,位置,名字,地方,连续,信息,命令,内容,L