Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3482|回复: 9

[已解决]●●●●●●●combobox removeitem index问题●●●●●●●

[复制链接]
发表于 2014-3-17 01:42 | 显示全部楼层 |阅读模式
本帖最后由 zixiaoruixue 于 2014-3-17 10:28 编辑

请问各位前辈可以帮我看看下面问题吗?


Private Sub UserForm_Initialize()
ComboBox1.AddItem "Submitted"
ComboBox1.AddItem "Cancelled"
ComboBox1.AddItem "Approved"
ComboBox1.AddItem "Rejected"
ComboBox1.AddItem "Repealed"

End Sub

Private Sub CommandButton1_Click()
Dim Serial$, Rst As New ADODB.Recordset, Strsql$, Ctl As Control, i%

On Error GoTo ErrLine
If Len(TextBox1) = 0 Then
    MsgBox "Pls input serial number", 1 + 16, "alert"
    TextBox1.SetFocus
    Exit Sub
End If

If Condb("TargetDatabase.accdb") = False Then GoTo Line1
Strsql = "select distinct ACCTNO,CUSTNM,Status from [Table] where SerialNum='" & _
    TextBox1 & "' order by  ACCTNO"
Set Rst = cnn.Execute(Strsql)
If Rst.EOF And Rst.BOF Then MsgBox "Cannot find Serial number": GoTo Line1

i = 1
Do Until Rst.EOF
    i = i + 1
    If i > 7 Then Exit Do
    If Len(TextBox2) = 0 Then TextBox8 = Rst.Fields("CUSTNM")
     TextBox9 = Rst.Fields("Status")
     
     Me.Controls("TextBox" & i) = Rst.Fields("ACCTNO")
    Rst.MoveNext
Loop

If TextBox9.Text = "Submitted" Then
    ComboBox1.RemoveItem (0)
    ComboBox1.RemoveItem (4)
    ElseIf TextBox9.Text = "Approved" Then
    ComboBox1.RemoveItem (0)
    ComboBox1.RemoveItem (1)
    ComboBox1.RemoveItem (2)
    ComboBox1.RemoveItem (3)
  '请问各位前辈,我的代码这里出了点问题。
在这里用户点了按钮以后验证:如果TextBox9的值是“Submitted”,我就把‘ComboBox1里的项目“Submitted”(INDEX 0),和项目“Repealed”(INDEX 4)删除;
’如果TextBox9的值是Approved,我就把ComboBox1里项目INDEX0到3全部删除,只留下项目“Repealed”(INDEX4).

‘我发现如果我代码这么写,用户点按钮后第一次验证结果TextBox9的值是“Submitted”时,我的ComboBox1里的项目可以删’除正确
‘但如果用户连续点第二次,验证结果TextBox9的值如果还是“Submitted”时,我的ComboBox1里的项目就删乱了,因为第二次’的时候我的INDEX1的值就变成INDEX0了,因为之前验证的时候,程序已经帮我把最开始的INDEX0里的项目删除了。
‘请问各位大神有没有什么解决办法啊?

End If

Line1:
Set Rst = Nothing: Exit Sub
ErrLine:
MsgBox Err.Description: GoTo Line1
End Sub

最佳答案
2014-3-17 09:34
zixiaoruixue 发表于 2014-3-17 09:28
我说的是COMBOBOX,我的COMBOBOX里本来的内容是
ComboBox1.AddItem "Submitted"
ComboBox1.AddItem " ...

可以利用数组加载。
    ComboBox1.List = Array(1, 2, 3, 4, 5)

发表于 2014-3-17 08:25 | 显示全部楼层
你只有先找到你要删除的Item的索引号,再去删除。
回复

使用道具 举报

 楼主| 发表于 2014-3-17 09:20 | 显示全部楼层
hwc2ycy 发表于 2014-3-17 08:25
你只有先找到你要删除的Item的索引号,再去删除。

找到索引号删除没问题,但是如何让用户点第二次按钮以后进行删除之前,下拉菜单恢复成原样呢?

回复

使用道具 举报

发表于 2014-3-17 09:21 | 显示全部楼层
下拉菜单?什么原样?
你说的是组合框吧?
回复

使用道具 举报

 楼主| 发表于 2014-3-17 09:28 | 显示全部楼层
hwc2ycy 发表于 2014-3-17 09:21
下拉菜单?什么原样?
你说的是组合框吧?


我说的是COMBOBOX,我的COMBOBOX里本来的内容是
ComboBox1.AddItem "Submitted"
ComboBox1.AddItem "Cancelled"
ComboBox1.AddItem "Approved"
ComboBox1.AddItem "Rejected"
ComboBox1.AddItem "Repealed"

但是如果任意删除其中几个内容,有没有什么办法可以让COMBOBOX里的内容直接恢复,而不是一个个加回?

回复

使用道具 举报

发表于 2014-3-17 09:34 | 显示全部楼层    本楼为最佳答案   
zixiaoruixue 发表于 2014-3-17 09:28
我说的是COMBOBOX,我的COMBOBOX里本来的内容是
ComboBox1.AddItem "Submitted"
ComboBox1.AddItem " ...

可以利用数组加载。
    ComboBox1.List = Array(1, 2, 3, 4, 5)

评分

参与人数 1 +1 收起 理由
zixiaoruixue + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-3-17 10:22 | 显示全部楼层
hwc2ycy 发表于 2014-3-17 09:34
可以利用数组加载。
    ComboBox1.List = Array(1, 2, 3, 4, 5)

前辈,问题已经解决了,万分感谢。
还想请问REMOVEITEM这个可不可以同时删除多个INDEX的内容啊?还是只能一个个去删?


回复

使用道具 举报

发表于 2014-3-17 10:26 | 显示全部楼层
zixiaoruixue 发表于 2014-3-17 10:22
前辈,问题已经解决了,万分感谢。
还想请问REMOVEITEM这个可不可以同时删除多个INDEX的内容啊?还是只能 ...

貌似只能一个个,要么全删。
回复

使用道具 举报

 楼主| 发表于 2014-3-17 10:27 | 显示全部楼层
hwc2ycy 发表于 2014-3-17 10:26
貌似只能一个个,要么全删。

好的,谢谢大大

回复

使用道具 举报

发表于 2014-3-17 11:09 | 显示全部楼层
zixiaoruixue 发表于 2014-3-17 10:27
好的,谢谢大大

好了就给个最佳答案,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 19:52 , Processed in 0.525451 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表