当前位置:编程学习 > VB >>

求解决!

Private Sub GetCaption(ByVal StrTxt As String, Caption As Label, Nom As Integer) '滚动文字
Caption.Caption = Split(Split(StrTxt, "$$$")(Nom), "|")(0)      '运行后此行出的错误
Caption.ToolTipText = Split(Split(StrTxt, "$$$")(Nom), "|")(0)
Caption.Tag = Split(Split(StrTxt, "$$$")(Nom), "|")(1)



这个我是在软件中读取一个网址为滚动新闻的。

运行后就提示出错
实时错误'9'
下标越界

求解决修改!谢谢 --------------------编程问答-------------------- 用 split 拆分字符串的时候 要注意检测下标 用UBOUND 检测下标后再处理 --------------------编程问答-------------------- 没有匹配出指定的字符串。 --------------------编程问答-------------------- 我刚研究VB。要怎么解决?这代码上怎么改? --------------------编程问答-------------------- 你的问题就像一道缺少条件的应用数学题。 --------------------编程问答--------------------
引用 4 楼 caozhy 的回复:
你的问题就像一道缺少条件的应用数学题。

+1 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 6 楼 zhangpinghai 的回复:
补上:

代码:
Private Sub GetCaption(ByVal StrTxt As String, Caption As Label, Nom As Integer) '滚动文字
Caption.Caption = Split(Split(StrTxt, "$$$")(Nom), "|")(0)
Caption.ToolTipText = Split(Split(StrTxt……


你有没有发现你缺了什么条件,所以这道题无解? --------------------编程问答-------------------- 你到现在都没有理解为什么我说“你的问题就像一道缺少条件的应用数学题”是什么意思。

说直白一点,你不但对你要解决的问题一无所知,连你要解决什么问题也一无所知。 --------------------编程问答-------------------- 这是为什么呢? --------------------编程问答-------------------- 加上几句:

Dim tmp() As String

tmp = Split(StrTxt, "$$$")

If Ubound(tmp) < Nom Then Exit Sub

...... --------------------编程问答-------------------- Split(Split(StrTxt, "$$$")
这个可能因为strtxt里面没有"$$$"而返回一个数组,但是这个数组只有一个元素,下标是0
所以如果你的输入参数Nom不是0,这种情况下Caption.Caption = Split(Split(StrTxt, "$$$")(Nom), "|")(0)必然出错

--------------------编程问答-------------------- 我这个是这样子的。这边是读取一个网址为html。里面写入文字的话如果有的话就读出来。如果没有的话最好为空。可是软件掉用的时候。打开软件。有联网的情况 下是正常。可是没有联网的话那么就提示出错了。。。或者找不到调用的那个网址的时候。 --------------------编程问答-------------------- 出错时因为数据,你对数据的各种可能考虑不足.

没有联网就没有合适的数据,没有合适的数据就造成调用的错误.

多几个if,改下程序结构 --------------------编程问答-------------------- 你看下代码之前是不是有这句

Option Base 1

这个的作用是定义数组下标从1开始,, 你读索引为  0的字符串肯定报下标越界! --------------------编程问答--------------------
引用 14 楼 wasm 的回复:
你看下代码之前是不是有这句

Option Base 1

这个的作用是定义数组下标从1开始,, 你读索引为  0的字符串肯定报下标越界!

下标从1开始,那么之前规定的整个数组下标都发生了变化.我觉得有点得不偿失.
并且 "option base 1"并不会影响split的返回.
不论split是否成功分割,都会返回下标是0字符串数组
所以最好还是对这个数组判断下
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,