永发信息网

再次请教VBA中关于“range"对象作用于"worksheet"时失败

答案:2  悬赏:60  手机版
解决时间 2021-02-13 17:22
  • 提问者网友:几叶到寒
  • 2021-02-13 09:57
这次是引用另一个工作簿的情况,而且无法用数组来替代,请高手指点,代码是这样:

Sub savetobargain()
Dim targetrange2, T_range As Range '第一个是目标单元格范围,第二个是目标单元格
Dim yearnum, monthnumsta, monthnumend, n As Integer '这几个是运算用的
Dim rangesta, rangend As String '这是引用的起始位置和最终位置的字符串
yearnum = Year(Now()) '取年份
monthnumsta = Month(Now()) * 1000 - 999 '取月份在工作表中的开始行
monthnumend = Month(Now()) * 1000 ''取月份在工作表中的最终行
rangesta = "A" & monthnumsta
rangend = "U" & monthnumend
'Workbooks("工作簿2.xlsm").Sheets(yearnum & "表").Select ‘加这句也不行
Set targetrange2 = Workbooks("工作簿2.xlsm").Worksheets(yearnum & "表").Range(rangesta, rangend) '这里的range对象就会失败,没引用到对象
n = WorksheetFunction.CountA(targetrange2)
T_range = targetrange2.Cells(n, 1).Resize(0, targetrange2.Columns)
With T_range
.Cells(1, 1) = rangeval(3, 3)
.Cells(1, 2) = rangeval(3, 11)
.Cells(1, 3) = rangeval(5, 3)
.Cells(1, 4) = rangeval(5, 10)
.Cells(1, 5) = rangeval(5, 5)
。。。。。。
最佳答案
  • 五星知识达人网友:一把行者刀
  • 2021-02-13 10:13
代码没有错,检查:
1、工作簿2.xlsm是否已经打开

2、工作簿2.xlsm下是否有名为“2015表”的工作表
全部回答
  • 1楼网友:不如潦草
  • 2021-02-13 10:43
if cells(i, 5) = cells(i + 1, 5) then sheet1.range(cells(i, 3), cells(i, 5)).copy 把这句改成 下面的试试 if cells(i, 5) = cells(i + 1, 5) then sheet1.range(sheet1.cells(i, 3), sheet1.cells(i, 5)).copy
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯