satırda yapılan yükseklik ayarı verili alan olarak algılanmasın

EKREM1661

Altın Üye
Katılım
10 Kasım 2006
Mesajlar
1,265
Excel Vers. ve Dili
Excel-2016
Altın Üyelik Bitiş Tarihi
03-02-2026
saygıdeğer sevgili arkadaşlar..! selamlar..!

Daha önce; makro ile (belirlenmiş bir alan içerisinden) veri seçme konusunda;

Sn.veyselemre den aşağıdaki kodu
Sub TumunuSec() 'Kısayol Ctrl-K
adr = ActiveSheet.UsedRange
bulundu = False
For x = LBound(adr) To UBound(adr)
For y = LBound(adr, 2) To UBound(adr, 2)
If Cells(x, y) <> Empty Then
If bulundu = False Then
Cells(x, y).Select
bulundu = True
Else
Union(Selection, Cells(x, y)).Select
End If
End If
Next y
Next x
End Sub
ve
Sub UsedRangeSec()
ActiveSheet.UsedRange.Select
End Sub

Sn.Seyit_Tiken den de,
Sub Düğme1_Tıklat()
a = Application.InputBox("Aralık Girin")
Range(a).Select
End Sub

bu kodları almış idim, bir seri işlem içerisinde kullanılabilecek çok güzel kodlar. Ancak, sonradan farkına vardım; eğer sayfa içerisinde her hangi bir satırın yükseklik ayarı ile oynanmışsa, o satıra kadar olan kısmı (veri varmış gibi) seçilecek veriler arasına dahil ediliyor. Bu da benim istemediğim bir durum.

bu sorunu nasıl aşabiliriz..yani satır yüksekliklerine yapılacak ayarlamalardan etkilenmemesi lazım.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,622
Excel Vers. ve Dili
Pro Plus 2021
Bir de bunu deneyin.
Kod:
Sub UsedRangeSec()
Set rng = ActiveSheet.UsedRange

bassut = rng.Column
sonsut = bassut + rng.Columns.Count - 1

bassat = rng.Row
sonsat = bassat + rng.Rows.Count - 1

For x = bassat To sonsat
    If WorksheetFunction.CountA(Range(Cells(x, bassut), Cells(x, sonsut))) > 0 Then
        bassat = x
        Exit For
    End If
Next x

For x = sonsat To bassat Step -1
    If WorksheetFunction.CountA(Range(Cells(x, bassut), Cells(x, sonsut))) > 0 Then
        sonsat = x
        Exit For
    End If
Next x

Set rng = Range(Cells(bassat, bassut), Cells(sonsat, sonsut))
rng.Select

MsgBox "Buraya Kadar T&#252;m Kullan&#305;lan Alan Se&#231;ildi" & vbCr & "A&#351;a&#287;&#305;daki komutlarla da sadece form&#252;ll&#252; ve sabit de&#287;erli h&#252;creler se&#231;ilecek"
rng.SpecialCells(xlCellTypeConstants).Select
Union(Selection, rng.SpecialCells(xlCellTypeFormulas)).Select
set rng=nothing
End Sub
 

EKREM1661

Altın Üye
Katılım
10 Kasım 2006
Mesajlar
1,265
Excel Vers. ve Dili
Excel-2016
Altın Üyelik Bitiş Tarihi
03-02-2026
say&#305;n veyselemre..!

yukar&#305;da verdi&#287;iniz kod, sat&#305;r ayarlamalar&#305;ndan etkilenmiyor, o y&#246;ndeki sorun kalkt&#305;..
Fakat kodun ilk k&#305;sm&#305;nda veri olan h&#252;crelerin sat&#305;rlar&#305;n&#305; da boydan boya se&#231;iyor, ikinci k&#305;sm&#305;nda ise (MsgBox iletisinden sonra) verili her h&#252;creyi ayr&#305; ayr&#305; &#231;oklu se&#231;im y&#246;ntemiyle se&#231;iyor.
Bu durumda; kodun devam&#305;nda ilave etmek istedi&#287;im, kopyala makrosunu &#231;oklu se&#231;im olmas&#305; nedeniyle reddediyor.

Yani son olarak verili h&#252;creleri &#231;oklu se&#231;imle de&#287;il de sadece verili olan k&#305;sm&#305; bir defa da se&#231;ebilirsek bu sorun tamamen halledilmi&#351; olacak..
size de fazla zahmet vermek istemiyorum..
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,622
Excel Vers. ve Dili
Pro Plus 2021
Merhaba kopyalama i&#231;in a&#351;a&#287;&#305;daki gibi deneyin.
Kod:
Sub UsedRangeSec()
Set rng = ActiveSheet.UsedRange

bassut = rng.Column
sonsut = bassut + rng.Columns.Count - 1

bassat = rng.Row
sonsat = bassat + rng.Rows.Count - 1

For x = bassat To sonsat
    If WorksheetFunction.CountA(Range(Cells(x, bassut), Cells(x, sonsut))) > 0 Then
        bassat = x
        Exit For
    End If
Next x

For x = sonsat To bassat Step -1
    If WorksheetFunction.CountA(Range(Cells(x, bassut), Cells(x, sonsut))) > 0 Then
        sonsat = x
        Exit For
    End If
Next x

Set rng = Range(Cells(bassat, bassut), Cells(sonsat, sonsut))
rng.Select

MsgBox "Buraya Kadar T&#252;m Kullan&#305;lan Alan Se&#231;ildi" & vbCr & "A&#351;a&#287;&#305;daki komutlarla da sadece form&#252;ll&#252; ve sabit de&#287;erli h&#252;creler se&#231;ilecek"
On Error Resume Next
rng.SpecialCells(xlCellTypeConstants).Select
Set rng = Union(Selection, rng.SpecialCells(xlCellTypeFormulas)).Select

rng.Copy [a40]
Set rng = Nothing
End Sub
 
Üst