不能这样删除数组元素。用Redim重定义数组也只限于改变数组个数,不能从中间删除。
要达到这种效果可以这样做,将你要删除的元素值赋成一个其他元素都不能取的值,比如你所有的元素合法值都是大于零的,那你就把要删除的元素赋成零。这样就可以区别开哪些元素是被你删除的了。
要达到这种效果可以这样做,将你要删除的元素值赋成一个其他元素都不能取的值,比如你所有的元素合法值都是大于零的,那你就把要删除的元素赋成零。这样就可以区别开哪些元素是被你删除的了。
解决方案 »
- 微软来了!大家快逃!
- VB连接SQL2000的语句中参数能使用变量吗?
- width相同的控件显示却不一样大,是何故?
- VB 里有没有类似Listbox那样的类?
- 求VB高手和软件测试员
- 我想问一下,怎样实现MSFlexGrid控件内容的打印功能!
- VB获得窗口顺序求助..
- 如何获得其它程序中EditBox中的值
- 同一个OCX控件,用在VB6中时,【工程】-【引用】和【工程】-【部件】这两种方式都可以使用这个OCX,请问这两种方式有什么区别?
- 如何在VB中,动态产生一个用户ODBC
- 请问:如何解决用ADODB进行数据库操作时的出错?如何捕捉错误及进行相关处理?
- 请教:怎样在不使用ADODC的情况下用代码使用DataGrid控件(最好有例子)
如果能大概预知这个数组的取值范围,比如数组中绝不会出现 -9999 这样的数字,就好办:
可以先逐一进行“删除操作”,注意,并不是真的删除,而是把要删除的,比如第3个值变为-9999: a(2)=-9999
然后找下标最小的元素:
Dim i As Integer
For i = 0 To 20
If a(i) = -9999 Then Exit For
Next这是的i值就是符合条件的最小下标,a(i)就是下标最小的元素。
怎么样?给分吧!
用一个有21个元素的Collection,想删就删。
用集合做这些事实在是太容易了!
Dim a As New Collection
a.Add "1" 'a(1)=1
a.Add "2" 'a(2)=2
a.Add "3" 'a(3)=3
a.Remove (2) '删除a(2)如果你是数组,我同意上面两位的说法。
从最初的程序设计(结构化)上得知数组在运行过程中定长的
把要删除的元素删掉后。
dim varTest as Variant
for each varTest in 集合
里面的不用写了吧。:)
next
不过好像你的程序有点问题哦
a(0)=1, a(2)=1 a(4)=8 ,a(5)=-9999
循环到i=5退出,下标最小应该是0,而不是5吧?
Dim i As Integer
For i = 0 To 20
If a(i) <> -9999 Then Exit For
Next把“=”改为“<>”即可!