ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] combobox预设赋值问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-12-26 19:27 | 显示全部楼层 |阅读模式
求高手代码:

两个不同工作簿的A列,初始化赋值到同一个combobox,叠加   
请问这个代码怎么写   比如 表一  A列的1,2,3,4   表2A列的  5,6,7,8   都赋值给同combobox,最后下拉选项:1,2,3,4,5,6,7,8
屏幕截图 2022-12-26 192215.png

TA的精华主题

TA的得分主题

发表于 2022-12-26 23:43 | 显示全部楼层
我通常喜欢这么写,但代码速度肯定不快
arr1=..
arr2=..
cmbbox.list=ToArray1D(array(arr1,arr2))

ToArray1D是个比较复杂的自定义函数,写一次以后可以直接使用。

TA的精华主题

TA的得分主题

发表于 2022-12-27 09:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
把要形成下拉的内容装入字典,最后把字典的key写入combobox

TA的精华主题

TA的得分主题

发表于 2022-12-27 10:01 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-27 20:58 | 显示全部楼层
ivccav 发表于 2022-12-27 10:01
这种三无提问,不知道提问者怎么想的

  我以为都能理解,问题也比较简单,所以没有上附件,其次我只是一个小白,所以看问题应该不全面望谅解,另外,我举的例子没想到你直接理解为1,2,3,4,5,6,7,8了。 所以我能理解你的思路,但我想要的是多一步就是将1,2,3,4,5,6,7,8,。。。。。。不仅仅只是8个数字,是表1的一列,表2的一列,循环查找到后再叠加赋值给combobox,能将所在单元格内容写值的代码一并做一下吗?
最后非常感谢你的解答,又学到一点,再次感谢

TA的精华主题

TA的得分主题

发表于 2022-12-28 10:21 | 显示全部楼层
Mr吴贤明 发表于 2022-12-27 20:58
我以为都能理解,问题也比较简单,所以没有上附件,其次我只是一个小白,所以看问题应该不全面望 ...



四楼老师已经说的很清楚了,示例也给了,你根据你实际的文件进行简单修改就行了,
建议学习一点基础知识,不然......真的很难

关于求助贴的答复效率与发帖规范
image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-28 15:58 | 显示全部楼层
02761752696 发表于 2022-12-28 10:21
四楼老师已经说的很清楚了,示例也给了,你根据你实际的文件进行简单修改就行了,
建议学习一点基础 ...

跟你说的一样,没点基础,真的很难,我声明了我纯小白,他的意思我能理解,也在努力学,你写的正是我领悟到的,可是我不会写这个代码。所以没办法实现将1,2,3,这些数字转换成单元格或者数组。
不过,一直在学习,我现在用了两个关联combobox 实现了要求
Private Sub userform_Initialize()
ComboBox1.List() = Array("主料", "辅料", "调味料")
End Sub

Private Sub combobox1_change()
If ComboBox1.Text = "主料" Then
ComboBox2.Clear
arr = Workbooks("基础信息表").Sheets("主材料信息").Range(Workbooks("基础信息表").Sheets("主材料信息").[A2], Workbooks("基础信息表").Sheets("主材料信息").Cells(Rows.Count, 1).End(xlUp))

  ComboBox2.List = arr
  ElseIf ComboBox1.Text = "辅料" Then
  ComboBox2.Clear
  arr = Workbooks("基础信息表").Sheets("辅材料信息").Range(Workbooks("基础信息表").Sheets("辅材料信息").[A2], Workbooks("基础信息表").Sheets("辅材料信息").Cells(Rows.Count, 1).End(xlUp))
   ComboBox2.List = arr
   ElseIf ComboBox1.Text = "调味料" Then
   ComboBox2.Clear
   arr = Workbooks("基础信息表").Sheets("调味料信息").Range(Workbooks("基础信息表").Sheets("调味料信息").[A2], Workbooks("基础信息表").Sheets("调味料信息").Cells(Rows.Count, 1).End(xlUp))
    ComboBox2.List = arr
  End If
End Sub

试了一下,也能达到目的,只是有点瑕疵不会改,就是窗体确定录入之后,窗体没有退出直接再次添加材料的时候,如果combobo1没有改变,这时候combobox2是空值,除非combobox1选别的后再选回来才会正常关联, 思考了一下是不是ComboBox2.Clear  这个放置的事件位置不对? 请老师指点一下

关系的工作簿和工作表太多了,就没上附件了

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

本版积分规则

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

GMT+8, 2024-11-20 02:36 , Processed in 0.038333 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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