某日看到有贴如下: 图中看上去像个窗体的玩意儿来个清晰的: 于是我照葫芦画瓢搞了个相似的,如下: 在excel界面,开发工具-插入-ActiveX控件,即可绘制 具体插入哪些控件如下图: VBA代码如下: ·工作表激活事件 Private Sub Worksheet_Activate() Sheet1.培训类型.ColumnCount = 2 Sheet1.培训类型.ListFillRange = '培训人!E2:F4' 'Sheet1.培训人.ColumnCount = 2 Sheet1.培训人.ListFillRange = '培训人!A2:A5' '可以写成:Sheet1.培训人.List = Array('张仲景', '孙思邈') '不能写成:Sheet1.培训人.ListFillRange = 'Sheet2!A2:A5' '不能写成:Sheet1.ComboBox1.RowSource = 'Sheet1!K1:K3' Sheet1.培训时长.List = Array('1.5小时', '2小时', '3小时') Sheet1.培训方式.ListFillRange = '培训人!B2:B3' Sheet1.培训形式.ListFillRange = '培训人!C2:C5' Sheet1.考核内容.ListFillRange = '培训人!D2:D5'
'年 Sheet1.年.List = Array('2022')
'月 Dim yue(1 To 12) For y_i = 1 To 12
yue(y_i) = y_i
Next
Sheet1.月.List = yue
'日 Dim ri
If Int(Sheet1.月.Value) / 2 = 1 Then '如果是2月
ReDim ri(1 To 28) For r_i = 1 To 28 ri(r_i) = r_i Next Sheet1.日.List = ri
ElseIf Int(Sheet1.月.Value) / 2 = Int(Int(Sheet1.月.Value) / 2) And Int(Sheet1.月.Value) / 2 <> 1 Then '如果月份是偶数,且不是2月
ReDim ri(1 To 30) For r_i = 1 To 30 ri(r_i) = r_i Next Sheet1.日.List = ri
ElseIf Int(Sheet1.月.Value) / 2 <> Int(Int(Sheet1.月.Value) / 2) Then '如果月份是奇数
ReDim ri(1 To 31) For r_i = 1 To 31 ri(r_i) = r_i Next Sheet1.日.List = ri
End If
End Sub ·生成编号-点击事件
·培训内容-change事件 Private Sub 培训类型_Change()
Sheet1.培训类型2.Value = Sheet1.培训类型.List(Sheet1.培训类型.ListIndex, 1)
End Sub ·录入-点击事件
运行后,效果如下: 涉及到的知识点 单选框和复选框一般结合框架使用,同一框架内的按钮自成一体,与其他框架内的按钮互不干扰。 now()函数,返回当前日期和时间(时分秒); date()函数,返回当前日期; left函数,从指定字符串的左侧返回指定数量的字符 left(string,length) OLEObjects 对象 是所有 OLEObject 对象的集合。 OLEObject对象代表一个ActiveX控件或者一个链接或嵌入的OLE对象? texbox内编辑文字如何分行: 1,设置文本框Multiline = true 多行模式,true代表每行都有一个行首和行末 2,设置文本框Wordwarp = true Wordwarp代表自动分行 3,设置文本框Enterkeybehavior= true 不可使用 Text 更改 ComboBox 或 ListBox 中的条目的值;而是应使用 Column 或 List 属性。 最近在看《墨子》,预计用时1.5个月,看完夏已尽,寒冷的冬天又要来了。 上下班途中看的是《聊斋志异》。 END |
|
来自: 钺YUE > 《Excel和VBa》