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时失败的错误提示。请高人指点。

参考技术A 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追问

改成你提供的语句可以执行了,请问原因是出错在哪里呢?

追答

原因我没研究过,个人经验,当你用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中的数组切片,如何为整行赋值?

vba三个问题,如何判断target属于范围?

Excel VBA中的ThisCell属性如何使用?

VBA学习笔记之End属性&查找最后的单元格方法总结

VBA或者VB 6.0中,要实现EXCEL与WORD的数据交换,但是对于selection和Range这两个对象VBA或VB只认EXCEL的