• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

makro için "AN"sütununda hücre yüksekliği

Katılım
2 Ekim 2011
Mesajlar
356
Excel Vers. ve Dili
excel 360 TR 64bit
makro için "AN"sütununda herhangi satır hücresinde metin yok ise sadece o satırı 25 hücre yüksekliğine ayarlayabilirmiyiz
 
Merhaba.
Sayfanın kod kısmına aşağıdaki kodları kopyalayın.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("AN:AN")) Is Nothing Then
        If Target = "" Then
            Rows(Target.Row).RowHeight = 25
        End If
    End If
End Sub

AN sütununda bir değişiklik olduğunda kodlar çalışacak ve istediğinizi yapacaktır.
 
Merhaba.
Sayfanın kod kısmına aşağıdaki kodları kopyalayın.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("AN:AN")) Is Nothing Then
        If Target = "" Then
            Rows(Target.Row).RowHeight = 25
        End If
    End If
End Sub

AN sütununda bir değişiklik olduğunda kodlar çalışacak ve istediğinizi yapacaktır.
cevabınız için çok teşekkür ederim.kodu ekledim.nasıl çalışıyor .bir hareket olmadı onun için

sayfayı hazırladıktan sonra makroyu çalıştırsam daha iyi olur.
 
Yukarıdaki kod "AN" sütununda herhangi bir hücrede değişiklik yaptığınızda sadece değişiklik yapılan hücre için çalışır.

Aşağıdaki kodu normal çalıştırdığınızda "AN" sütunundaki tüm hücreleri kontrol ederek çalışır.
Kod:
Sub Test()
    Dim Bak As Range
    For Each Bak In Range("AN:AN")
        If Bak = "" Then
            Rows(Bak.Row).RowHeight = 25
        End If
    Next
End Sub

Hangisi işinizi görüyorsa onu kullanırsınız.
 
Yukarıdaki kod "AN" sütununda herhangi bir hücrede değişiklik yaptığınızda sadece değişiklik yapılan hücre için çalışır.

Aşağıdaki kodu normal çalıştırdığınızda "AN" sütunundaki tüm hücreleri kontrol ederek çalışır.
Kod:
Sub Test()
    Dim Bak As Range
    For Each Bak In Range("AN:AN")
        If Bak = "" Then
            Rows(Bak.Row).RowHeight = 25
        End If
    Next
End Sub

Hangisi işinizi görüyorsa onu kullanırsınız.
bu kod tercihimdir.ancak 20 dk bekledim hala işlemdeydi. kapattım. dosyamında 30 mb büyüklüğünde .o yüzdenmi bilemedim.belki sayfanın bütün satırlarınamı bakıyor?. 500 satıra kadar verilerim. işin içinden çıkamadım
 
O zaman şu kodu kullanın.

Kod:
Sub Test()
    Dim Bak As Range
    Dim SonSatir As Long
    SonSatir = Cells(Rows.Count, "AN").End(xlUp).Row
    For Each Bak In Range("AN1:AN" & SonSatir)
        If Bak = "" Then
            Rows(Bak.Row).RowHeight = 25
        End If
    Next
End Sub
 
"metin yoksa" ifadenizden ne anlamalıyız. Hücre boşsa mı demek istiyorsunuz?
 
O zaman şu kodu kullanın.

Kod:
Sub Test()
    Dim Bak As Range
    Dim SonSatir As Long
    SonSatir = Cells(Rows.Count, "AN").End(xlUp).Row
    For Each Bak In Range("AN1:AN" & SonSatir)
        If Bak = "" Then
            Rows(Bak.Row).RowHeight = 25
        End If
    Next
End Sub
evet bu gayet hızlı saniyesinde işlem yaptı çok teşekkür ederim ellerinize sağlık
 
Alternatif;

Hız olarak biraz daha avantaj sağlayacaktır.

C++:
Option Explicit

Sub Satir_Yuksekligi_Ayarla()
    Dim Son_Satir As Range, Veri As Range, X As Long, Alan As Range, Zaman As Double
   
    Zaman = Timer
   
    Set Son_Satir = Cells.Find("*", , , , xlByRows, xlPrevious)

    For Each Veri In Range("AN1:AN" & Son_Satir.Row)
        If Veri.Value = "" Then
            If Alan Is Nothing Then
                Set Alan = Veri
            Else
                Set Alan = Union(Alan, Veri)
            End If
        End If
    Next
   
    If Not Alan Is Nothing Then Alan.RowHeight = 25
   
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub


Eğer AN sütununda hücreler gerçekten boş ise yani (formül girişi sonucu boş olanlar hariç) aşağıdaki kod ile de sonuca gidebilirsiniz.

C++:
Option Explicit

Sub Satir_Yuksekligi_Ayarla()
    Dim Son_Satir As Range, Zaman As Double
    
    Zaman = Timer
    
    Set Son_Satir = Cells.Find("*", , , , xlByRows, xlPrevious)

    Range("AN1:AN" & Son_Satir.Row).SpecialCells(xlCellTypeBlanks).RowHeight = 25
    
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
 
Alternatif;

Hız olarak biraz daha avantaj sağlayacaktır.

C++:
Option Explicit

Sub Satir_Yuksekligi_Ayarla()
    Dim Son_Satir As Range, Veri As Range, X As Long, Alan As Range, Zaman As Double
  
    Zaman = Timer
  
    Set Son_Satir = Cells.Find("*", , , , xlByRows, xlPrevious)

    For Each Veri In Range("AN1:AN" & Son_Satir.Row)
        If Veri.Value = "" Then
            If Alan Is Nothing Then
                Set Alan = Veri
            Else
                Set Alan = Union(Alan, Veri)
            End If
        End If
    Next
  
    If Not Alan Is Nothing Then Alan.RowHeight = 25
  
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub


Eğer AN sütununda hücreler gerçekten boş ise yani (formül girişi sonucu boş olanlar hariç) aşağıdaki kod ile de sonuca gidebilirsiniz.

C++:
Option Explicit

Sub Satir_Yuksekligi_Ayarla()
    Dim Son_Satir As Range, Zaman As Double
   
    Zaman = Timer
   
    Set Son_Satir = Cells.Find("*", , , , xlByRows, xlPrevious)

    Range("AN1:AN" & Son_Satir.Row).SpecialCells(xlCellTypeBlanks).RowHeight = 25
   
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
ellerinize sağlık ......
 
Geri
Üst