gpt4 book ai didi

vba - 传递范围作为函数(参数)

转载 作者:行者123 更新时间:2023-12-04 20:36:12 24 4
gpt4 key购买 nike

我正在尝试将范围作为函数中的参数传递,以便我可以选择和清除它。

但是,我不断收到应用程序定义/对象定义错误。

如果我在我的 clearData 方法中执行此操作,我只需执行 range("m3").select而不是 range(test).select有用。

我究竟做错了什么?

Sub CopyData()
Call ClearData("Detailed Report", Sheets("Detailed Report").range("M3"))
Sheets("Raw Data").Select
range("A2").Select
range(Selection, Selection.End(xlToRight)).Select
range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Detailed Report").Select
range("M3").Select
ActiveSheet.Paste
End Sub

Sub ClearData(sheetName As String, range As range)
Sheets(sheetName).Select
Dim deletrange As range
Set deletrange = range
range(deletrange).Select
deletrange(Selection, Selection.End(xlToRight)).Select
deletrange(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
End Sub

最佳答案

尽量不要用 range 之类的名称定义变量, 自 Range是一个 Excel 保存的单词。

另外,不需要SelectSelection ,而是使用完全限定的范围和工作表。

备注 : 请记住,使用 End(xlDown)End(xlToRight)获取最后一行和最后一列不是最安全的方法。如果要使用“M3”的连续范围,请使用Range("M3").CurrentRegion .

如果要获取整个工作表的范围,包括中间的空行和列,请使用:

要获得最后一行,请使用:

Sheets("Detailed Report").Cells(Sheets("Detailed Report").Rows.Count, "M").End(xlUp).Row

要获得最后一列,请使用:
Sheets("Detailed Report").Cells(3, Sheets("Detailed Report").Columns.Count).End(xlToLeft).columnn

代码
Sub CopyData()    
ClearData "Detailed Report", Sheets("Detailed Report").Range("M3")
' Copy >> Paste in 1 line (without Selecting)
Sheets("Raw Data").Range("A2").Resize(Sheets("Raw Data").Range("A2").End(xlDown).Row, Sheets("Raw Data").Range("A2").End(xlToRight).Column).Copy _
Sheets("Detailed Report").Range("M3")
End Sub

'=====================================================================

Sub ClearData(sheetName As String, Rng As Range)
' the code line below uses your original method, less recommended
Rng.Resize(Rng.End(xlDown).Row, Rng.End(xlToRight).Column).ClearContents

' better of using the code line below:
Rng.CurrentRegion.ClearContents

End Sub

关于vba - 传递范围作为函数(参数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42323890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com