ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 12471|回复: 7

[求助] 求助关于combobox.list数组赋值的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-8-6 21:54 | 显示全部楼层 |阅读模式
求助关于combobox.list数组赋值的问题
下面是一段代码,但出错了。请问:我想打开USERFORM时在COMBOBOX1中显示数组的上标,且我已设定COMBOBOX1的STYLE属性为2,只能选择,不他人输入数据。
现在设置初始值出错,提示不能设置TEXT 、VALUE “属性”,即下面代码的红色部分。不写这句,调出窗口,combobox1框中是空白。
请问如何做到调出窗口后,combobox1框中显示数组arr的上标?
Private Sub UserForm_Initialize()
Dim row As Long, arr
row = Sheet4.Range("bk65536").End(xlUp).row  - 1
arr = Sheet4.Range("bk2:bk" & row).Value
UserForm4.ComboBox1.List = arr
UserForm4.ComboBox1.Value = LBound(arr)
End sub

TA的精华主题

TA的得分主题

发表于 2011-8-6 22:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
combobox.add item 才对吧
不是combobox.value
另外,推荐用for循环增加

[ 本帖最后由 aoranbuqun 于 2011-8-6 22:20 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-8-6 22:31 | 显示全部楼层
UserForm4.ComboBox1.Value = arr(LBound(arr))
这样呢?

UserForm4.ComboBox1.listindex=LBound(arr)

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-6 22:52 | 显示全部楼层
原帖由 livewire 于 2011-8-6 22:31 发表
UserForm4.ComboBox1.Value = arr(LBound(arr))
这样呢?

UserForm4.ComboBox1.listindex=LBound(arr)

谢谢楼上的,测试结果如下:
上面的这种情况,显示“下标越界”
下面的方法,可以设置显示,但是框中显示的不是第一项(上标),而是第二项。如数组是:1,2,3,4,5,它显示的是2.
UserForm4.ComboBox1.listindex=UBound(arr)
改成下标也出现错误。

[ 本帖最后由 mjzxlmg 于 2011-8-6 23:03 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-8-6 22:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 4楼 mjzxlmg 的帖子

UserForm4.ComboBox1.Value = arr(LBound(arr),1)
如value  不行,试下UserForm4.ComboBox1.TEXT

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-6 23:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 livewire 于 2011-8-6 22:56 发表
UserForm4.ComboBox1.Value = arr(LBound(arr),1)
如value  不行,试下UserForm4.ComboBox1.TEXT



试过了,也和VALUE一样,出现不能设置属性的错误。
但是把Style属性设置为0时,
UserForm4.ComboBox1.Value = LBound(arr) 、 UserForm4.ComboBox1.text = LBound(arr) 、UserForm4.ComboBox1.Value = UBound(arr) 、 UserForm4.ComboBox1.text = UBound(arr)均不报错,显示的也正常的上标、下标。
现在的问题是把COMBOBOX1的Style的属性设置为2时,不知如何弄了。

TA的精华主题

TA的得分主题

发表于 2011-8-7 08:32 | 显示全部楼层
在下面的代码基础上改一下

Private Sub UserForm_Initialize()
Dim row As Long, arr
row = Sheet1.Range("a65536").End(xlUp).row - 1
arr = Sheet1.Range("a1:a" & row).Value
UserForm1.ComboBox1.Style = fmStyleDropDownCombo
UserForm1.ComboBox1.List = arr
UserForm1.ComboBox1.ListIndex = LBound(arr) - 1
UserForm1.ComboBox1.Style = fmStyleDropDownList
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-7 09:56 | 显示全部楼层
原帖由 wxhnr 于 2011-8-7 08:32 发表
在下面的代码基础上改一下

Private Sub UserForm_Initialize()
Dim row As Long, arr
row = Sheet1.Range("a65536").End(xlUp).row - 1
arr = Sheet1.Range("a1:a" & row).Value
UserForm1.ComboBox1.Style = ...


楼主方法可行,数组的上标下标均可以用。谢谢了。
上标,我把 .listindex=LBound(arr)改为:.listindex=0就可以了。
但是下标还是按照楼主的办法搞好了。 .listindex=UBound(arr) -1

[ 本帖最后由 mjzxlmg 于 2011-8-7 10:06 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-21 00:44 , Processed in 0.023062 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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