VBA 为 ActiveSheet 设置范围而不是 A1:B2
VBA set range for ActiveSheet instead of A1:B2
我是 VBA 的菜鸟
我的数据范围从 Row1 到 Row 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
我想将范围设置为当前 sheet "Sheet1"
当我执行 Dim r As Range: Set r = Range("Sheet1")
时,它向我抛出一个错误,我似乎无法在 SO 上找到我想要的东西。
谁能帮帮我?谢谢
尝试:
Dim r As Range: Set r = Sheets("Sheet1").Range("A1:D4")
尝试下面的代码,作为良好做法,始终在模块顶部使用 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
您需要找到最后一行,然后构建您的范围。见 This link
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
我是 VBA 的菜鸟 我的数据范围从 Row1 到 Row 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
我想将范围设置为当前 sheet "Sheet1"
当我执行 Dim r As Range: Set r = Range("Sheet1")
时,它向我抛出一个错误,我似乎无法在 SO 上找到我想要的东西。
谁能帮帮我?谢谢
尝试:
Dim r As Range: Set r = Sheets("Sheet1").Range("A1:D4")
尝试下面的代码,作为良好做法,始终在模块顶部使用 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
您需要找到最后一行,然后构建您的范围。见 This link
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