excel中vba命令问题,不能执行,大家帮我看看

vba中每行命令如下,但是却没有办法执行下去,a,b,d无法赋值。帮我看看是怎么回事(空间工具箱中的组合框已经设置完成,第一个组合框是1-12个数字,第二个组合框是she... vba中每行命令如下,但是却没有办法执行下去,a,b,d无法赋值。帮我看看是怎么回事
(空间工具箱中的组合框已经设置完成,第一个组合框是1-12个数字,第二个组合框是sheet2,sheet3,sheet4)
Public a, b As Integer
Public d, str As String

Private Sub ComboBox1_Change()
a = Choose(ComboBox1.Value, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
b = Choose(ComboBox1.Value, 6, 37, 66, 97, 127, 158, 188, 219, 250, 280, 311, 341)
End Sub
Private Sub ComboBox2_Change()
d = Choose(ComboBox2.Value, "sheet2", "sheet3", "sheet4")
End Sub

Sub 数据1()
Dim str
Sheets("sheet1").Range(Cells(1, 2), Cells(a, 42)).Copy
Sheets(d).Select
Range(Cells(b, 3), Cells(a+b, 43)).PasteSpecial Paste:=xlPasteValues, SkipBlanks:=False, Transpose:=False
Sheets("sheet1").Select
Range(Cells(1, 2), Cells(a, 42)).ClearContents
str = "录入完毕!"
MsgBox str, vbOKOnly
End Sub
展开
 我来答
xuanxuan163com
2011-03-29 · TA获得超过2769个赞
知道大有可为答主
回答量:1709
采纳率:75%
帮助的人:1610万
展开全部
Public a, b As Integer
Public d, str As String
定义是否放在模块中?
在每次运行过程“数据1”之前,ComboBox1和ComboBox2先发生Change事件时,a、b、d才能取得值。建议a、b、d在过程“数据1”内取值。
Sub 数据1()
Dim str
a = Choose(Sheet1.ComboBox1.Value, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
b = Choose(Sheet1.ComboBox1.Value, 6, 37, 66, 97, 127, 158, 188, 219, 250, 280, 311, 341)
d = Choose(Sheet1.ComboBox2.Value, "sheet2", "sheet3", "sheet4")
Sheets("sheet1").Range(Cells(1, 2), Cells(a, 42)).Copy
Sheets(d).Select
Range(Cells(b, 3), Cells(a + b, 43)).PasteSpecial Paste:=xlPasteValues, SkipBlanks:=False, Transpose:=False
Sheets("sheet1").Select
Range(Cells(1, 2), Cells(a, 42)).ClearContents
str = "录入完毕!"
MsgBox str, vbOKOnly
End Sub
太极健1969
2011-03-29 · TA获得超过9034个赞
知道大有可为答主
回答量:8668
采纳率:69%
帮助的人:3632万
展开全部
Public a, b As Integer
Public d, str As String

Private Sub ComboBox1_Change()
ComboBox1.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
a = Choose(ComboBox1.Value, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
MsgBox a
b = Choose(ComboBox1.Value, 6, 37, 66, 97, 127, 158, 188, 219, 250, 280, 311, 341)
MsgBox b
End Sub

Private Sub ComboBox2_Change()
ComboBox2.List = Array(1, 2, 3)
d = Choose(ComboBox2.Value, "sheet2", "sheet3", "sheet4")
MsgBox a
MsgBox d
End Sub

Sub 数据1()
Dim str
MsgBox a
Sheets("sheet1").Range(Cells(1, 2), Cells(a, 42)).Copy
Sheets(d).Select
Range(Cells(b, 3), Cells(a + b, 43)).PasteSpecial Paste:=xlPasteValues, SkipBlanks:=False, Transpose:=False
Sheets("sheet1").Select
Range(Cells(1, 2), Cells(a, 42)).ClearContents
str = "录入完毕!"
MsgBox str, vbOKOnly
End Sub
你试下,先combobox1选择一下,后面就有值传过去了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dnydxw
2011-03-29 · TA获得超过1.5万个赞
知道大有可为答主
回答量:2942
采纳率:0%
帮助的人:1464万
展开全部
a = Choose(ComboBox1.Value, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
b = Choose(ComboBox1.Value, 6, 37, 66, 97, 127, 158, 188, 219, 250, 280, 311, 341)
d = Choose(ComboBox2.Value, "sheet2", "sheet3", "sheet4")
以上ComboBox1和ComboBox2没有初始化赋值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式