excel sheet1 如何调用sheet2 vba代码

我在sheet1vba里写了一段代码subt1callt2range("a1").value=sheets(2).range("a1").valueendsubsheet... 我在sheet1 vba里 写了一段代码
sub t1
call t2

range("a1").value=sheets(2).range("a1").value
end sub

sheet2里写了一段代码

sub t2

range("a1").value="=rand()"
end sub

然后在sheet1里 插入一个控件 指定宏为sheet1里的代码 但是调用不了sheet2里的宏 是不是跨工作表之间不能互相调用? 那我应该怎么做?

执行后提示 错误 400
Columns("A:B").Select
ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("B1:B10") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet2").Sort
.SetRange Range("A1:B10")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
展开
 我来答
tf日出
2013-05-02 · TA获得超过1076个赞
知道小有建树答主
回答量:648
采纳率:0%
帮助的人:253万
展开全部
Sub t1()
Sheet2.t2
End Sub

但是注意,由于t2程序中未指定是哪张Sheet,虽然是在Sheet1中调用,但由于t2在Sheet2中,所以缺省仍指向Sheet2,程序会对Sheet2中的A1单元格赋值
追问
我按你说的试了一下 还是不行

提示 错误1004
我发现好像sheet2里的宏前半段执行了 后半段 排序的代码没执行

没有执行的后半段代码 我放在 问题补充里面了 你看看 独立在sheet2里运行没问题 就是不能再sheet1里调用
追答
跨表调用,最好所有的对象都要指定Sheet。
另外,你的程序中有Select方法,如果在另一个表中调用必须先activate.
wyw0113
2015-11-03 · TA获得超过2106个赞
知道大有可为答主
回答量:2519
采纳率:66%
帮助的人:962万
展开全部
用call函数,但sheet2的vba函数或者过程,必须为Public类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式