• DİKKAT

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

next without for hatası

Katılım
11 Ocak 2011
Mesajlar
7
Excel Vers. ve Dili
2010 türkçe
Sub gizle()

Dim i , a As Integer
a=val(g1")
For i = 1 To a
If ActiveSheet.Cells(i, 5).Value = 14 Then
Rows(i, 5).Select
Selection.EntireRow.Hidden = True
i = i + 1
Next i

End Sub

arkadaşlar, "e sütünundaki değerin 14 olması halinde o satırı gizle" şeklinde bir makro yapmak istiyorum, yukarıdaki kodu çalıştırdığımda "next without for" hatası veriyor. sorun nedir? yardım ederseniz sevinirim.
 
Blok if açmışsınız.
Aşağıdaki kırmızı kod ile İf koşulunu sonlandırmanı lazım.:)
Kod:
If ActiveSheet.Cells(i, 5).Value = 14 Then
Rows(i, 5).Select
Selection.EntireRow.Hidden = True
i = i + 1
[B][COLOR="Red"]End If[/COLOR][/B]
 
Edit:Sayın Orion1, kusura bakmayın yanıtınızı görmeden yazmışım

Kodu aşağıdaki gibi düzeltip denermisiniz?

Kod:
Sub gizle()
a = Range("E1").Value
If a = 14 Then
Columns("E:E").Select
    Selection.EntireColumn.Hidden = True
    Range("A1").Select
End If
End Sub
 
Edit:Sayın Orion1, kusura bakmayın yanıtınızı görmeden yazmışım

Kodu aşağıdaki gibi düzeltip denermisiniz?

Kod:
Sub gizle()
a = Range("E1").Value
If a = 14 Then
Columns("E:E").Select
    Selection.EntireColumn.Hidden = True
    Range("A1").Select
End If
End Sub

bu e sütununu gizliyor, ben 14 olan hücrenin olduğu satırı gizlemek istiyorum,

orion'un söylediğini yaptım çalıştı.

teşekkürler.
 
Sub gizle()

Dim i, a, sayac As Integer
a = Range("q3").Value
sayac = 1
For i = 2 To a
'If ActiveSheet.Cells(i, 10).Value = 14 Then
If Range("J" & i).Value = 14 Then
'Cells(i, 10).Select
Range("J" & i).Select
Selection.EntireRow.Hidden = True
Range("J" & i - 1).Select
i = i + 1
sayac = sayac + 1
End If
Next i
MsgBox sayac & "sayıda satır gizlendi"


End Sub
Sub goster()

Cells.Select
Selection.EntireRow.Hidden = False
Range("A1").Activate
End Sub


arkadaşlar; makroda son durum bu, ancak yine bir sorun çıktı ve bir türlü halledemedim, sorun şu; "gizle" makrosunu çalıştırdığımda, if koşulunu sağlayan ardarda olan hücrelerde ilkini gizliyor ikincisini gizlemiyor, ardarda değilse sorun çıkmıyor. yani şu : mesela j10,j11,j12,j13,j14 hücreleri koşulu sağlıyorsa, j10,j12 ve j14 ün olduğu satırlar gizleniyor sadece.
 
Kodları aşağıdaki gibi düzenleyip denermisiniz?

Kod:
Sub gizle()
Dim i, a, sayac As Integer
a = Range("q3").Value
For i = a To 2 Step -1
Cells(i, 10).Select
b = Cells(i, 10)
If b = 14 Then Rows(i).Select Else GoTo 10
Selection.EntireRow.Hidden = True
sayac = sayac + 1
10
Next i
MsgBox sayac & " sayıda satır gizlendi."
End Sub

Gizlenmiş satırları göstermek içinde aşağıdaki kodlardan faydalanabilirsiniz. İyi çalışmalar.

Kod:
sub goster()
a = [q3]
Rows("2:" & a + 1).Select
Selection.EntireRow.Hidden = False
Range("A2").Select
End Sub


Örnek dosya ektedir.
 

Ekli dosyalar

Son düzenleme:
Sayın omerrica,

Aşağıdaki kodu bir dener misiniz.

Sub Düğme1_Tıklat()
Dim a,b,i as Integer
a = Range("q3").Value
b = 0
For i = 2 To a
If Rows(i).Hidden = True Then i = i + 1
If Cells(i, 10) = 14 Then
Rows(i).EntireRow.Hidden = True
i = i - 1
b = b + 1
End If
Next i
MsgBox b & " satır gizlendi"
End Sub
 
Geri
Üst