【发布时间】:2014-02-15 23:12:31
【问题描述】:
我对使用 VBA 还是很陌生,所以如果我不知道所有首选术语,我深表歉意。
我正在尝试编写一个用户表单来填充电子表格,以便我跟踪使用的员工 PTO。此电子表格的 X 轴(第 1 行)表示日期,Y 轴(A 列)表示员工姓名。
我创建的用户表单有 5 个条件:
1) Employee Name (ComboBox1; this is a drop down of multiple rows)
2) Date of PTO (ComboBox2; this is supposed to be a drop down of multiple columns)
3) Duration of PTO (OptionButton1 is 1 Day, OptionButton2 is 0.5 Day)
4) Enter Data (CommandButton1)
5) Cancel (CommandButton2)
通过在电子表格上选择并标记菜单,我已完成标准 1。
剩下的就是让我兴奋的地方。
我似乎无法让日期(标准 2)以行格式显示在 ComboBox2 下拉列表中。如果我将这些项目转换为单个列,我就能够标记组并创建下拉菜单。这是有问题的,因为我将无法形成要填充的网格。
我的 OptionButton1 和 OptionButton2 项目旨在成为输入值(1 和 0.5)。在这个时候,我一直无法给他们价值,只是名字。这个输入是我无法让网格格式工作的主要问题的次要问题(上面的段落)。
第三个问题是标准 4 和 5 的组合。我的脚本无法执行 CommandButton1,尽管我相信这是由于我的代码非常基本:
Private Sub CommandButton1_Click()
cmdOK
End Sub
CommandButton2 似乎可以使用此代码工作:
Private Sub CommandButton2_Click()
cmdCancel
End Sub
在描述了我的问题之后,我的所有问题都是“我的最终目标可能吗?”我只打算为此使用 Excel,因为很多人已经可以使用它。如果这是可能的,那么我会要求帮助识别我的错误点并进行更正,或者提供指向编码手册的链接,我可以在其中尝试了解有关功能的更多信息(这更多的是长期情况,这不会对这个问题没有太大帮助,但我会觉得很好)。
提前感谢您的回复。
编辑:
@赛斯
我已经完成了 ComboBox2(日期)选择。我无法使用下面建议的循环来访问值(1 行,365 列)。
我尝试修改 Seth 的代码,但我真的对循环一无所知;我觉得我很可能没有正确填写一个部分(我正在查看 .Value ""):
私有子 ComboBox2_Change() 暗我一样长
i = 1
Do While ThisWorkbook.ActiveSheet("Breakdown").Cells("A1:NC1", i).Value <> ""
Me.ComboBox1.AddItem (ThisWorkbook.ActiveSheet("Breakdown").Cells("A1:NC1", i).Value)
i = i + 1
Loop
End Sub
使用此代码,我收到错误“运行时错误'438':对象不支持此属性或方法”
我正在尝试找到理解编写循环的一般指南,尽管我没有找到对上述某些陈述的参考,所以我不肯定如何纠正我的问题。我相信它也可能与盒子的属性有关。我可以在 RowSource 下输入“日期”(我对该范围的通用术语,通过突出显示和标记来定义),尽管这不会循环行。
@亚历克斯D
我也在尝试我收到的第二个帖子的路径;当我尝试使用时出现运行时错误:
Private Sub UserForm_Initialize()
For i = 2 To Sheets("Breakdown").UsedRange.Columns.Count
comboDate.AddItem (Cells(1, i))
comboDate.List(comboDate.ListCount - 1, 1) = i
Next
End Sub
可能移动定义该数据的位置会使其工作吗?一般来说,我在工作表中有一个按钮(也就是选择一个单元格并弹出用户窗体),所以可能不需要初始化?
西里尔 20140127 (1700 UTC)
【问题讨论】: