我想用VBA在Excel宏中定義變量範圍。第一個單元始終是A25,但最後一個單元正在移動,具體取決於收集的數據數量。這可以是E35或E58等任何想法如何做到這一點?Visual Basic for Excel中的變量範圍
1
A
回答
0
您可以將範圍定義爲其兩個限制單元格。比方說,你是在工作表「WS」工作:
Dim rng As Range
Dim cl1 As Range: Set cl1 = ws.Range("A25")
Dim cl2 As Range
Set cl2 = ws.Range("E35") 'Or something else'
Set rng = ws.Range(cl1, cl2)
1
有2個選項:
選項1:你正在尋找定義Range
是連續的(見下面的屏幕截圖):
的簡單的方法就可以了:
Option Explicit
Sub DefRange()
Dim Rng As Range
With Worksheets("Sheet1") '<-- modify "Sheet" to your sheet's name
Set Rng = .Range("A25").CurrentRegion
Debug.Print Rng.Address '<-- for debug: will show A25:E35
End With
End Sub
選項2:你正在尋找定義的範圍,在中間(下面的屏幕截圖)一個空行:
那麼,以前的方法將會導致一個錯誤的範圍
Option Explicit
Sub DefRange()
Dim Rng As Range
Dim LastRow As Long
Dim LastCol As Long
With Worksheets("Sheet1") '<-- modify "Sheet" to your sheet's name
Set Rng = .Range("A25").CurrentRegion
Debug.Print Rng.Address '<-- for debug: will show A25:E35 ***WRONG***
'Search for any entry, by searching backwards by Rows.
LastRow = .Cells.Find(What:="*", After:=.Range("A25"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'Search for any entry, by searching backwards by Columns.
LastCol = .Cells.Find(What:="*", After:=.Range("A25"), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Set Rng = .Range(.Cells(25, "A"), .Cells(LastRow, LastCol))
Debug.Print Rng.Address '<-- for debug: will show A25:F37 ***CORRECT***
End With
End Sub
+0
@Eric Justus你有沒有試過這裏的答案?他們工作過嗎? –
0
只是算排在E列,
Sub Button1_Click()
Dim LstRw As Long
Dim Rng As Range, x
LstRw = Cells(Rows.Count, "E").End(xlUp).Row
x = IIf(LstRw > 25, LstRw, 25)
Set Rng = Range("A25:E" & x)
Rng.Select
End Sub
+0
感謝大家,它工作正常。 –
相關問題
- 1. visual basic for application Excel
- 2. Visual Basic Excel函數 - 範圍偏移量錯誤
- 3. PHP for; foreach變量範圍
- 4. for循環中的Python變量範圍
- 5. for循環中變量的範圍C++
- 6. Excel,Visual Basic更改公式使用的範圍
- 7. Excel中的變量範圍VBA
- 8. Math.Round變量? Visual basic
- 9. VBS for excel:在範圍選擇中使用腳本變量
- 10. Excel visual basic 1004錯誤,對象'範圍'的方法'值'失敗
- 11. 在Excel範圍中使用變量
- 12. Excel範圍循環變量的名稱
- 13. 在Excel中使用變量範圍
- 14. Visual Basic中的共享變量和DLL用法問題。範圍混淆
- 15. 變量範圍的for循環
- 16. Excel值到變量列的範圍
- 17. Excel Visual Basic - 檢測範圍是否爲空
- 18. Visual Basic OpenLinks Excel
- 19. Visual Basic中變量的增量
- 20. 引用基於excel變量的範圍?
- 21. excel vba範圍從變量的行
- 22. 變量名內的Visual Basic變量
- 23. 變量範圍
- 24. For循環變量範圍混淆
- 25. javascript中的變量範圍
- 26. Python中的變量範圍
- 27. Excel中的Visual Basic - WorksheetFunction.max
- 28. Ruby中的變量範圍
- 29. Java中的變量範圍
- 30. C++的變量範圍
假設連續範圍..將其添加到變量嘗試設置rng =範圍(「a25」)。currentregion,獲取作爲字符串的範圍嘗試str =範圍(「a25」)。currentregion.address – Zerk
您是否收集從A25開始的區域或試圖寫入該區域的數據?如果是前者,Zerk表示,Range.CurrentRegion可能是您最好的選擇。 – SgtStens