Soru ActiveSheet hakkında

Cengizhantr06

Altın Üye
Katılım
16 Mayıs 2020
Mesajlar
301
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
18-05-2025
Hayırlı akşamlar
Herhangibir kod yazarken sayfa adı yerine
mesala s1 adını kullanmak istiyorum hangi sayfa aktifse o sayfanın adı s1 olsun istiyorum
ama sayfa adı değişmeyecek sadece kodda öyle görecek
alttaki kodda hata veriyor neden acaba

Kod:
S1 = ActiveSheet.Name
Sheets("s1").Range("T14").Copy
Sheets("s1").Range("Q14").PasteSpecial xlPasteValues
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

Set S1 = ActiveSheet
 

Cengizhantr06

Altın Üye
Katılım
16 Mayıs 2020
Mesajlar
301
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
18-05-2025
yine aynı Korhan bey
run time 9 subscript out of range hatası
Kod:
Set S1 = ActiveSheet
Sheets("s1").Range("T14").Copy
Sheets("s1").Range("Q14").PasteSpecial xlPasteValues
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,334
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
İnceleyiniz...
Kod:
S1 = ActiveSheet.Name
Sheets(S1).Range("T14").Copy
Sheets(S1).Range("Q14").PasteSpecial xlPasteValues
Kod:
Set S1 = ActiveSheet
S1.Range("T14").Copy
S1.Range("Q14").PasteSpecial xlPasteValues
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bir nesneyi kısa bir tanımlama ile SET ettikten sonra artık o kısa tanımlama o nesne yerine kullanılmaktadır.

Tanımlamalar tek satırlık işlemlerde eziyet gibi görünebilir. Fakat uzun kodlama yapılarında epey kolaylık sağlıyor. Ayrıca yazım tekniğinize göre kodu okumak ve anlamak biraz daha kolaylaşıyor.

Alttaki örnekleri inceleyebilirsiniz. Hepsi aynı işlemi yapmaktadır..

C++:
Option Explicit

Sub Test_1()
    [Sheet1!A1] = "Deneme"
End Sub

Sub Test_2()
    Sheets("Sheet1").Range("A1") = "Deneme"
End Sub

Sub Test_3()
    Dim S1 As Worksheet
    
    Set S1 = Sheets("Sheet1")
    
    S1.Range("A1") = "Deneme"
End Sub

Sub Test_4()
    Dim S1 As Worksheet
    
    Set S1 = Sheets("Sheet1")
    
    S1.Range("A1") = "Deneme"
End Sub

Sub Test_5()
    Dim Rng As Range
    
    Set Rng = Sheets("Sheet1").Range("A1")
    
    Rng = "Deneme"
End Sub

Sub Test_6()
    Dim S1 As Worksheet
    
    Set S1 = Sheets("Sheet1")
    
    S1.Cells(1, 1) = "Deneme"
    S1.Cells(1, "A") = "Deneme"
End Sub

Sub Test_7()
    Dim S1 As Worksheet
    
    Set S1 = Sheets("Sheet1")
    
    S1.Cells(1, "A") = "Deneme"
End Sub

Sub Test_8()
    Dim Rng As Range
    
    Set Rng = Sheets("Sheet1").Cells(1, 1)
    
    Rng = "Deneme"
End Sub

Sub Test_9()
    Dim Rng As Range
    
    Set Rng = Sheets("Sheet1").Cells(1, "A")
    
    Rng = "Deneme"
End Sub
 

Cengizhantr06

Altın Üye
Katılım
16 Mayıs 2020
Mesajlar
301
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
18-05-2025
Bir nesneyi kısa bir tanımlama ile SET ettikten sonra artık o kısa tanımlama o nesne yerine kullanılmaktadır.

Tanımlamalar tek satırlık işlemlerde eziyet gibi görünebilir. Fakat uzun kodlama yapılarında epey kolaylık sağlıyor. Ayrıca yazım tekniğinize göre kodu okumak ve anlamak biraz daha kolaylaşıyor.

Alttaki örnekleri inceleyebilirsiniz. Hepsi aynı işlemi yapmaktadır..

C++:
Option Explicit

Sub Test_1()
    [Sheet1!A1] = "Deneme"
End Sub

Sub Test_2()
    Sheets("Sheet1").Range("A1") = "Deneme"
End Sub

Sub Test_3()
    Dim S1 As Worksheet
   
    Set S1 = Sheets("Sheet1")
   
    S1.Range("A1") = "Deneme"
End Sub

Sub Test_4()
    Dim S1 As Worksheet
   
    Set S1 = Sheets("Sheet1")
   
    S1.Range("A1") = "Deneme"
End Sub

Sub Test_5()
    Dim Rng As Range
   
    Set Rng = Sheets("Sheet1").Range("A1")
   
    Rng = "Deneme"
End Sub

Sub Test_6()
    Dim S1 As Worksheet
   
    Set S1 = Sheets("Sheet1")
   
    S1.Cells(1, 1) = "Deneme"
    S1.Cells(1, "A") = "Deneme"
End Sub

Sub Test_7()
    Dim S1 As Worksheet
   
    Set S1 = Sheets("Sheet1")
   
    S1.Cells(1, "A") = "Deneme"
End Sub

Sub Test_8()
    Dim Rng As Range
   
    Set Rng = Sheets("Sheet1").Cells(1, 1)
   
    Rng = "Deneme"
End Sub

Sub Test_9()
    Dim Rng As Range
   
    Set Rng = Sheets("Sheet1").Cells(1, "A")
   
    Rng = "Deneme"
End Sub
bu dosyada hergün yeni bir sayfa acıp diğer sayfaya geciyoruz o yüzden her sayfa ismi günün tarihi oluyor bu yüzden activesheet kullanmak zorundayım @Korhan Ayhan bey yarın demeyecen bunları aslında diğer uzun kodlarda calısıyor ama kıda kodda hata veriyor
 
Üst