Merhaba,
Sonuç döndürmeyen sadece çağrıldığı zaman seçili hücrelerle ilgili bir işlem yapan fonksiyon yazmak istiyorum.
Mesela
Makro'da sürekli kullanıcı tercihlerine göre farklı isimlerdeki range'ler veya hücre'ler seçilerek bu aralıklara tablo çizgileri oluşturuluyor. Bunu yapmak için
örnek olarak ;
ActiveSheet.Range(Range("a"), Range("b")).Select diyerek a ile b aralığını seçip
sonra tablo yazdırma kodlarını giriyorum.
Bu kod
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
..... diye gidiyor ve her seçili alan aralığı için aynı stili uyguluyorum yani aynı kodu.
Ben bu kodu her defasında .select ile hücre aralığı seçtikten sonra tekrar tekrar yazmak istemiyorum.
Bunun için bir kez function border() diye bir fonksiyon tanımladım ve altına border çizdiren bu kodları yazdım.
Fakat asıl kod içerisinde nasıl çağıracağımı bir türlü bulamadım çünkü eğer
border (ActiveSheet.Range(Range("a"), Range("b")).Select) yaparsam hata veriyor ve istediğimi gerçekleştirmiyor
border(Range(Range("a"), Range("b")).Select) yaparsam istediğimi gerçekleştiriyor ama aynı zamanda hata uyarısı da veriyor..
Sorum .select ile çalışırken bu seçili hücreleri fonksiyona nasıl yollayacağım ?
Daha pratik olarak şu kod nerede hatalı onu söyleyebilirseniz ben kendime uyarlayabilirim
Sub den()
deneme (Range(Range("A1"), Range("A5")).Select)
End Sub
'----
Function deneme()
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Function
'----
Sonuç döndürmeyen sadece çağrıldığı zaman seçili hücrelerle ilgili bir işlem yapan fonksiyon yazmak istiyorum.
Mesela
Makro'da sürekli kullanıcı tercihlerine göre farklı isimlerdeki range'ler veya hücre'ler seçilerek bu aralıklara tablo çizgileri oluşturuluyor. Bunu yapmak için
örnek olarak ;
ActiveSheet.Range(Range("a"), Range("b")).Select diyerek a ile b aralığını seçip
sonra tablo yazdırma kodlarını giriyorum.
Bu kod
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
..... diye gidiyor ve her seçili alan aralığı için aynı stili uyguluyorum yani aynı kodu.
Ben bu kodu her defasında .select ile hücre aralığı seçtikten sonra tekrar tekrar yazmak istemiyorum.
Bunun için bir kez function border() diye bir fonksiyon tanımladım ve altına border çizdiren bu kodları yazdım.
Fakat asıl kod içerisinde nasıl çağıracağımı bir türlü bulamadım çünkü eğer
border (ActiveSheet.Range(Range("a"), Range("b")).Select) yaparsam hata veriyor ve istediğimi gerçekleştirmiyor
border(Range(Range("a"), Range("b")).Select) yaparsam istediğimi gerçekleştiriyor ama aynı zamanda hata uyarısı da veriyor..
Sorum .select ile çalışırken bu seçili hücreleri fonksiyona nasıl yollayacağım ?
Daha pratik olarak şu kod nerede hatalı onu söyleyebilirseniz ben kendime uyarlayabilirim
Sub den()
deneme (Range(Range("A1"), Range("A5")).Select)
End Sub
'----
Function deneme()
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Function
'----