2013-07-30 32 views
17

Tôi tìm thấy một giải pháp tương tự cho câu hỏi này trong C# ... liên kết Xem bên dướiLàm thế nào để bạn chọn toàn bộ bảng tính excel với Phạm vi sử dụng Macro trong VBA?

How to Select all the cells in a worksheet in Excel.Range object of c#?

Có ai có một đoạn để làm điều này trong VBA? Tôi không thực sự quen thuộc với VBA, vì vậy điều này sẽ hữu ích. Đây là những gì tôi đã có cho đến nay ...

Tôi chọn dữ liệu thông thường bằng cách sử dụng "ctrl + shift over arrow, mũi tên xuống" để chọn toàn bộ dải ô. Khi tôi chạy điều này trong một macro nó mã ra A1: Q398247930, ví dụ. Tôi cần nó để chỉ được

.SetRange Range("A1:whenever I run out of rows and columns") 

này rất đơn giản, và tôi có thể dễ dàng làm điều đó bản thân mình mà không có một vĩ mô, nhưng tôi đang cố gắng để làm cho toàn bộ quá trình một vĩ mô, và đây chỉ là một mảnh của nó .

Sub sort() 
'sort Macro 
Range("B2").Select 
ActiveWorkbook.Worksheets("Master").sort.SortFields.Clear 
ActiveWorkbook.Worksheets("Master").sort.SortFields.Add Key:=Range("B2"), _ 
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
With ActiveWorkbook.Worksheets("Master").sort 
.SetRange Range("A1:whenever I run out of rows and columns") 
.Header = xlNo 
.MatchCase = False 
.Orientation = xlTopToBottom 
.SortMethod = xlPinYin 
.Apply 
End With 
End Sub 

chỉnh sửa: Có những phần khác, nơi tôi có thể muốn sử dụng mã tương tự nhưng phạm vi là nói "C3: Kết thúc hàng & cột". Có cách nào trong VBA để có được vị trí của ô cuối cùng trong tài liệu?

Cảm ơn!

Trả lời

22

Tôi tin rằng bạn muốn tìm khu vực hiện tại của A1 và các ô xung quanh - không nhất thiết phải tất cả các ô trên trang tính. Nếu vậy - chỉ cần sử dụng ... Range ("A1") CurrentRegion

+1

Điểm hợp lệ :) Tôi đã quên về 'CurrentRegion' – chancea

+0

Điều thú vị là, nếu bạn vừa sao chép một trang tính vào sổ làm việc mới, ** Phạm vi (" A1 "). CurrentRegion.Address ** trả về" A1 ", không phải vùng được sử dụng trên bảng tính. Tôi đã phải sử dụng phương pháp ** Phạm vi (Cells.Address) ** của chancea thay vào đó. – FreeMan

17

Bạn chỉ cần sử dụng cells.select để chọn tất cả ô trong trang tính. Bạn có thể lấy địa chỉ hợp lệ bằng cách nói Range(Cells.Address).

Nếu bạn muốn tìm số Used Range cuối cùng mà bạn đã thực hiện một số thay đổi định dạng hoặc nhập giá trị vào, bạn có thể gọi và chọn từ đó. Hy vọng rằng sẽ giúp

+0

Bạn thậm chí không cần 'tế bào. Chọn' nếu bạn chỉ muốn phạm vi. 'Cells' một mình sẽ cung cấp cho bạn phạm vi. – HotN

1

tôi sẽ khuyên bạn nên ghi một macro, như tìm thấy trong bài viết này.

Excel VBA macro to filter records

Nhưng nếu bạn đang tìm kiếm để tìm ra cuối dữ liệu của bạn và không phải là cuối bảng tính cần thiết, nếu không có ô trống giữa đầu và cuối của dữ liệu của bạn, tôi thường sử dụng một cái gì đó như điều này;

R = 1 
Do While Not IsEmpty(Sheets("Sheet1").Cells(R, 1)) 
    R = R + 1 
Loop 
Range("A5:A" & R).Select 'This will give you a specific selection 

Bạn còn lại R = số hàng sau khi dữ liệu của bạn kết thúc. Điều này có thể được sử dụng cho cột là tốt, và sau đó bạn có thể sử dụng một cái gì đó như Cells (C, R) .Chọn, nếu bạn đã thực hiện C đại diện cột.

+0

Cùng làm rõ rằng tôi đã hỏi Derek. Điều này có bắt được trường hợp tôi có hàng trống ở giữa hàng cuối cùng không? – matrixugly

+0

Không, điều này sẽ dừng lại khi nó đến một ô trống. – MakeCents

4

bạn có một vài lựa chọn ở đây:

  1. Sử dụng thuộc tính UsedRange
  2. tìm hàng cuối cùng và cột sử dụng
  3. sử dụng một bắt chước ca xuống và phải

tôi chuyển cá nhân sử dụng Phạm vi đã sử dụng và tìm phương pháp hàng và cột cuối cùng hầu hết thời gian.

Đây là cách bạn sẽ làm điều đó bằng cách sử dụng tài sản UsedRange:

Sheets("Sheet_Name").UsedRange.Select 

Tuyên bố này sẽ chọn tất cả các dãy được sử dụng trong bảng tính, lưu ý rằng đôi khi điều này không làm việc rất tốt khi bạn xóa cột và hàng.

Cách khác là để tìm ra tế bào cuối cùng được sử dụng trong bảng

Dim rngTemp As Range 
Set rngTemp = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious) 
If Not rngTemp Is Nothing Then 
    Range(Cells(1, 1), rngTemp).Select 
End If 

gì mã này được thực hiện:

  1. Tìm ô cuối cùng có chứa bất kỳ giá trị
  2. chọn tế bào (1 , 1) tất cả các cách đến ô cuối cùng
+0

hi, vâng, điều này sẽ bắt các ô được sử dụng lần cuối cho dù bạn có bao nhiêu hàng trống trong khoảng từ =] –

+0

Nên là 'Dim rngTemp As Range' – 10basetom

0

Có thể điều này có thể hoạt động:

Sh.Range ("A1", Sh.Range ("A" & Rows.Count) END (xlUp))

4

bạn có thể sử dụng tất cả các tế bào như một đối tượng như thế này:

Dim x as Range 
Set x = Worksheets("Sheet name").Cells 

X bây giờ là một đối tượng phạm vi có chứa toàn bộ trang tính

0

Tham chiếu đến câu hỏi đầu tiên, tôi đang xem xét tương tự. Kết quả tôi nhận được, ghi một macro, được, bắt đầu bằng cách chọn A76 tế bào:

Sub find_last_row() 
    Range("A76").Select 
    Range(Selection, Selection.End(xlDown)).Select 
End Sub 
0
Sub SelectAllCellsInSheet(SheetName As String) 
    lastCol = Sheets(SheetName).Range("a1").End(xlToRight).Column 
    Lastrow = Sheets(SheetName).Cells(1, 1).End(xlDown).Row 
    Sheets(SheetName).Range("A1", Sheets(SheetName).Cells(Lastrow, lastCol)).Select 
End Sub 

Để sử dụng với ActiveSheet:

Call SelectAllCellsInSheet(ActiveSheet.Name)