VBA为ActiveSheet设置范围而不是A1:B2
我是VBA的noob我有从Row1到行226的数据范围,试图导出为逗号分隔csv文件。
Sub Comma() Dim r As Range: Set r = Range("A1:D4") Dim buffer As String, delimiter As String, c As Range Dim i As Long
我想将范围设置为当前工作表“Sheet1”
当我做Dim r As Range: Set r = Range("Sheet1")
,它抛出了一个错误,我似乎无法find我想要的东西。
谁能帮帮我吗? 谢谢
你需要find最后一行,然后构build你的范围。 请参阅此链接
Sub Sample() Dim ws As Worksheet Dim lastrow As Long Dim rng As Range Set ws = Sheets("Sheet1") With ws If Application.WorksheetFunction.CountA(.Cells) <> 0 Then lastrow = .Cells.Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row Else lastrow = 1 End If Set rng = .Range("A1:D" & lastrow) End With End Sub
如果你的最后一列也没有解决,那就用这个
Sub Sample() Dim ws As Worksheet Dim lastrow As Long, lastCol As Long Dim rng As Range Dim colName As String Set ws = Sheets("Sheet1") With ws If Application.WorksheetFunction.CountA(.Cells) <> 0 Then lastrow = .Cells.Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row lastCol = .Cells.Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column Else lastrow = 1: lastCol = 1 End If colName = Split(Cells(, lastCol).Address, "$")(1) Set rng = .Range("A1:" & colName & lastrow) End With End Sub
尝试下面的代码,因为良好的做法总是在模块的顶部使用Option Explicit
。
Option Explicit Sub Comma() Dim r As Range Dim LastCell As Range Dim LastRow As Long Dim buffer As String, delimiter As String, c As Range Dim i As Long With Worksheets("Sheet1") ' get dynamic last row Set LastCell = .Cells.Find(What:="*", After:=Cells(1), Lookat:=xlPart, LookIn:=xlFormulas, _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False) If Not LastCell Is Nothing Then LastRow = LastCell.Row ' get last Row with data End If Set r = Worksheets("Sheet1").Range("A1:D" & LastRow) '<-- set Range to "Sheet1" End With End Sub
尝试:
Dim r As Range: Set r = Sheets("Sheet1").Range("A1:D4")