Excel'de Visual Basic yordamlarını kullanarak hücreleri/aralıkları seçme
Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna zımni garantiler, satılabilirlik veya belirli bir amaca uygunluk da dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler. Bu makaledeki örneklerde, aşağıdaki tabloda listelenen Visual Basic yöntemleri kullanılır.
Method Arguments
------------------------------------------
Activate none
Cells rowIndex, columnIndex
Application.Goto reference, scroll
Offset rowOffset, columnOffset
Range cell1
cell1, cell2
Resize rowSize, columnSize
Select none
Sheets index (or sheetName)
Workbooks index (or bookName)
End direction
CurrentRegion none
Bu makaledeki örneklerde aşağıdaki tabloda yer alan özellikler kullanılır.
Property Use
---------------------------------------------------------------------
ActiveSheet to specify the active sheet
ActiveWorkbook to specify the active workbook
Columns.Count to count the number of columns in the specified item
Rows.Count to count the number of rows in the specified item
Selection to refer to the currently selected range
Etkin Çalışma Sayfasında Hücre Seçme
Etkin çalışma sayfasında D5 hücresini seçmek için aşağıdaki örneklerden birini kullanabilirsiniz:
ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select
Aynı Çalışma Kitabındaki Başka Bir Çalışma Sayfasında Hücre Seçme
Aynı çalışma kitabındaki başka bir çalışma sayfasındaki E6 hücresini seçmek için aşağıdaki örneklerden birini kullanabilirsiniz:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
-or-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
Ya da çalışma sayfasını etkinleştirebilir ve ardından hücreyi seçmek için yukarıdaki yöntem 1'i kullanabilirsiniz:
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select
Farklı Bir Çalışma Kitabında Çalışma Sayfasında Hücre Seçme
Farklı bir çalışma kitabındaki çalışma sayfasında F7 hücresini seçmek için aşağıdaki örneklerden birini kullanabilirsiniz:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-or-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
Ya da çalışma sayfasını etkinleştirebilir ve ardından hücreyi seçmek için yukarıdaki yöntem 1'i kullanabilirsiniz:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select
Etkin Çalışma Sayfasında Hücre Aralığı Seçme
Etkin çalışma sayfasında C2:D10 aralığını seçmek için aşağıdaki örneklerden birini kullanabilirsiniz:
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select
or
ActiveSheet.Range(ActiveSheet.Cells(2, 3), ActiveSheet.Cells(10, 4)).Select
or, alternatively, it could be simplified to this:
Range(Cells(2, 3), Cells(10, 4)).Select
Aynı Çalışma Kitabındaki Başka Bir Çalışma Sayfasında Hücre Aralığı Seçme
Aynı çalışma kitabındaki başka bir çalışma sayfasında D3:E11 aralığını seçmek için aşağıdaki örneklerden birini kullanabilirsiniz:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
Ya da çalışma sayfasını etkinleştirebilir ve ardından aralığı seçmek için yukarıdaki yöntem 4'ü kullanabilirsiniz:
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select
Farklı Bir Çalışma Kitabındaki Çalışma Sayfasında Hücre Aralığı Seçme
Farklı bir çalışma kitabındaki çalışma sayfasında E4:F12 aralığını seçmek için aşağıdaki örneklerden birini kullanabilirsiniz:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
Ya da çalışma sayfasını etkinleştirebilir ve ardından aralığı seçmek için yukarıdaki yöntem 4'ü kullanabilirsiniz:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select
Etkin Çalışma Sayfasında Adlandırılmış Aralık Seçme
Etkin çalışma sayfasında "Test" adlı aralığı seçmek için aşağıdaki örneklerden birini kullanabilirsiniz:
Range("Test").Select
Application.Goto "Test"
Aynı Çalışma Kitabındaki Başka Bir Çalışma Sayfasında Adlandırılmış Aralık Seçme
Aynı çalışma kitabındaki başka bir çalışma sayfasında "Test" adlı aralığı seçmek için aşağıdaki örneği kullanabilirsiniz:
Application.Goto Sheets("Sheet1").Range("Test")
Ya da çalışma sayfasını etkinleştirebilir ve ardından adlandırılmış aralığı seçmek için yukarıdaki 7. yöntemi kullanabilirsiniz:
Sheets("Sheet1").Activate
Range("Test").Select
Farklı Bir Çalışma Kitabındaki Çalışma Sayfasında Adlandırılmış Aralık Seçme
Farklı bir çalışma kitabındaki çalışma sayfasında "Test" adlı aralığı seçmek için aşağıdaki örneği kullanabilirsiniz:
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
Ya da çalışma sayfasını etkinleştirebilir ve ardından adlandırılmış aralığı seçmek için yukarıdaki 7. yöntemi kullanabilirsiniz:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select
Etkin Hücreye Göre Hücre Seçme
Etkin hücrenin beş satır altında ve solunda dört sütun bulunan bir hücreyi seçmek için aşağıdaki örneği kullanabilirsiniz:
ActiveCell.Offset(5, -4).Select
Etkin hücrenin iki satırı ve sağındaki üç sütundan oluşan bir hücreyi seçmek için aşağıdaki örneği kullanabilirsiniz:
ActiveCell.Offset(-2, 3).Select
Not
"Çalışma sayfasının dışında" bir hücreyi seçmeye çalıştığınızda hata oluşur. Yukarıda gösterilen ilk örnek, etkin hücre A ile D arasındaysa hata döndürür, çünkü dört sütunu sola taşımak etkin hücreyi geçersiz bir hücre adresine götürür.
Bir Hücreyi Başka Bir Hücreye Göre Seçme (Etkin Olmayan) Hücre
Beş satır altında ve C7 hücresinin sağındaki dört sütundan oluşan bir hücreyi seçmek için aşağıdaki örneklerden birini kullanabilirsiniz:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select
Belirtilen Aralıktan Hücre Uzaklığı Aralığı Seçme
Adlandırılmış aralık "Test" ile aynı boyutta olan ancak dört satır aşağı ve üç sütun sağa kaydırılan bir hücre aralığı seçmek için aşağıdaki örneği kullanabilirsiniz:
ActiveSheet.Range("Test").Offset(4, 3).Select
Adlandırılmış aralık başka bir çalışma sayfasındaysa (etkin değil), önce bu çalışma sayfasını etkinleştirin ve ardından aşağıdaki örneği kullanarak aralığı seçin:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select
Belirtilen Aralığı Seçme ve Seçimi Yeniden Boyutlandırma
Adlandırılmış aralığı "Veritabanı" seçmek ve ardından seçimi beş satır genişletmek için aşağıdaki örneği kullanabilirsiniz:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select
Belirtilen Aralığı Seçme, Kaydırma ve Sonra Yeniden Boyutlandırma
Adlandırılmış aralığın dört satırı altında ve "Veritabanı" adlı aralığın sağındaki üç sütunu seçmek ve adlandırılmış aralıktan iki satır ve bir sütun daha fazla sütun eklemek için aşağıdaki örneği kullanabilirsiniz:
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 1).Select
İki veya Daha Fazla Belirtilen Aralığın Birleşimini Seçme
"Test" ve "Örnek" adlı iki aralığın birleşimini (yani birleşik alan) seçmek için aşağıdaki örneği kullanabilirsiniz:
Application.Union(Range("Test"), Range("Sample")).Select
Not
bu örneğin çalışması için her iki aralığın da aynı çalışma sayfasında olması gerekir. Union yönteminin sayfalarda çalışmadığını da unutmayın. Örneğin, bu satır düzgün çalışır.
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))
ama bu satır
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))
hata iletisini döndürür:
Uygulama sınıfının birleşim yöntemi başarısız oldu
İki veya Daha Fazla Belirtilen Aralığın Kesişimini Seçme
"Test" ve "Örnek" adlı iki aralığın kesişimini seçmek için aşağıdaki örneği kullanabilirsiniz:
Application.Intersect(Range("Test"), Range("Sample")).Select
Bu örneğin çalışması için her iki aralığın da aynı çalışma sayfasında olması gerektiğini unutmayın.
Bu makaledeki 17-21 arası örnekler aşağıdaki örnek veri kümesine bakın. Her örnek, örnek verilerde seçilecek hücre aralığını belirtir.
A1: Name B1: Sales C1: Quantity
A2: a B2: $10 C2: 5
A3: b B3: C3: 10
A4: c B4: $10 C4: 5
A5: B5: C5:
A6: Total B6: $20 C6: 20
Bitişik Veri Sütununun Son Hücresini Seçme
Bitişik sütundaki son hücreyi seçmek için aşağıdaki örneği kullanın:
ActiveSheet.Range("a1").End(xlDown).Select
Bu kod örnek tabloyla kullanıldığında, A4 hücresi seçilir.
Bitişik Veri Sütununun Altındaki Boş Hücreyi Seçme
Bir bitişik hücre aralığının altındaki hücreyi seçmek için aşağıdaki örneği kullanın:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
Bu kod örnek tabloyla kullanıldığında, A5 hücresi seçilir.
Bir Sütundaki Bitişik Hücre Aralığının Tamamını Seçme
Bir sütundaki bitişik hücre aralığını seçmek için aşağıdaki örneklerden birini kullanın:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
-or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
End(xlDown).Address).Select
Bu kod örnek tabloyla kullanıldığında, A1 ile A4 arasında hücreler seçilir.
Sütunda Bitişik Olmayan Hücre Aralığının Tamamını Seçme
Bitişik olmayan bir hücre aralığı seçmek için aşağıdaki örneklerden birini kullanın:
ActiveSheet.Range("a1",ActiveSheet.Range("a" & ActiveSheet.Rows.Count).End(xlUp)).Select
-or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a" & ActiveSheet.Rows.Count). _
End(xlUp).Address).Select
Bu kod örnek tabloyla kullanıldığında A1 ile A6 arasında hücreleri seçer.
Dikdörtgen Hücre Aralığı Seçme
Bir hücrenin etrafındaki dikdörtgen hücre aralığını seçmek için CurrentRegion yöntemini kullanın. CurrentRegion yöntemi tarafından seçilen aralık, boş satırlar ve boş sütunların herhangi bir bileşimiyle sınırlanmış bir alandır. Aşağıda CurrentRegion yönteminin nasıl kullanılacağına ilişkin bir örnek verilmiştir:
ActiveSheet.Range("a1").CurrentRegion.Select
Bu kod A1 ile C4 arasında hücreleri seçer. Aynı hücre aralığını seçmeye ilişkin diğer örnekler aşağıda listelenmiştir:
ActiveSheet.Range("a1", _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
-or-
ActiveSheet.Range("a1:" & _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
Bazı durumlarda A1 ile C6 arasında hücreleri seçmek isteyebilirsiniz. Bu örnekte, Satır 5'teki boş satır nedeniyle CurrentRegion yöntemi çalışmaz. Aşağıdaki örneklerde tüm hücreler seçilecektir:
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
-or-
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
ActiveSheet.Cells(lastRow, lastCol).Address).Select
Farklı Uzunlukta Bitişik Olmayan Birden Çok Sütun Seçme
Farklı uzunlukta bitişik olmayan birden çok sütun seçmek için aşağıdaki örnek tabloyu ve makro örneğini kullanın:
A1: 1 B1: 1 C1: 1 D1: 1
A2: 2 B2: 2 C2: 2 D2: 2
A3: 3 B3: 3 C3: 3 D3: 3
A4: B4: 4 C4: 4 D4: 4
A5: B5: 5 C5: 5 D5:
A6: B6: C6: 6 D6:
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select
Bu kod örnek tabloyla kullanıldığında, A1:A3 ve C1:C6 hücreleri seçilir.
Örneklerle ilgili notlar
ActiveSheet özelliği genellikle atlanabilir, çünkü belirli bir sayfanın adı belirtilmezse örtülüdür. Örneğin, yerine
ActiveSheet.Range("D5").Select
şunu kullanabilirsiniz:
Range("D5").Select
ActiveWorkbook özelliği de genellikle atlanabilir. Belirli bir çalışma kitabı adlandırılmadığı sürece etkin çalışma kitabı örtülüdür.
Application.Goto yöntemini kullandığınızda, belirtilen aralık başka bir çalışma sayfasında (etkin değil) olduğunda Range yöntemi içinde iki Hücre yöntemi kullanmak istiyorsanız, her seferinde Sayfalar nesnesini eklemeniz gerekir. Örneğin:
With ActiveWorkbook.Sheets("Sheet1")
Application.Goto .Range(.Cells(2, 3), .Cells(4, 5))
End With
Tırnak işareti içindeki herhangi bir öğe için (örneğin, adlandırılmış aralık "Test"), değeri metin dizesi olan bir değişken de kullanabilirsiniz. Örneğin, yerine
ActiveWorkbook.Sheets("Sheet1").Activate
you can use
ActiveWorkbook.Sheets(myVar).Activate
burada myVar değerinin "Sayfa1" olduğu yerdir.