VBA 方法range作用于对象_worksheet时失败
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA 方法range作用于对象_worksheet时失败相关的知识,希望对你有一定的参考价值。
If Cells(i, 5) = Cells(i + 1, 5) Then Sheet1.Range(Cells(i, 3), Cells(i, 5)).Copy: _
Sheets("Sheet" & 3 + sheetag).Cells(i - Tag, 1).PasteSpecial Paste:=xlPasteValues
如果是创建的宏(非个人宏工作簿),语句可以正常执行。但是一旦保存为个人宏工作簿就会有方法range作用于对象_worksheet时失败的错误提示。请高人指点。
把这句改成 下面的试试
If Cells(i, 5) = Cells(i + 1, 5) Then Sheet1.Range(Sheet1.Cells(i, 3), Sheet1.Cells(i, 5)).Copy追问
改成你提供的语句可以执行了,请问原因是出错在哪里呢?
追答原因我没研究过,个人经验,当你用range(cell(),cell()) 这样的形式的时候,如果cells() 的两个参数有变量的时候,前面加上cells() 的父对象就不会出错。
本回答被提问者和网友采纳vba--数组
Sub shishi() Range("e2") = Split(Range("e1"), "-")(0) ‘用短横线分隔后取第1个值 End Sub ---------------- Sub shishi() Dim arr(1 To 5) ‘声明数组 For i = 1 To 5 arr(i) = Range("b" & i + 1) * Range("c" & i + 1) Next Range("h3") = Application.WorksheetFunction.Max(arr) Range("h2") = Range("a" & Application.WorksheetFunction.Match(Range("h3"), arr, 0) + 1) ‘0代表精确匹配到最大值对应的产品种类 End Sub --- 数据为多行时 Sub shishi() Dim arr() ‘这里必须写范围,如果不写,则在下方必须要定义 Dim j, i As Integer j = Range("a65536").End(xlUp).Row - 1 ReDim arr(1 To j) For i = 1 To j arr(i) = Range("b" & i + 1) * Range("c" & i + 1) Next Range("h3") = Application.WorksheetFunction.Max(arr) Range("h2") = Range("a" & Application.WorksheetFunction.Match(Range("h3"), arr, 0) + 1) ‘0代表精确匹配 End Sub ----- Sub shishi() Dim arr() arr = Range("a:i") ‘输出第三行,第九列 MsgBox arr(3, 9) End Sub
以上是关于VBA 方法range作用于对象_worksheet时失败的主要内容,如果未能解决你的问题,请参考以下文章
Excel vba 函数counta未定义与autofill无效
VBA或者VB 6.0中,要实现EXCEL与WORD的数据交换,但是对于selection和Range这两个对象VBA或VB只认EXCEL的