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.