"End If WithOut Block If" hatası veriyor.

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
Merhaba Arkadaşlar, Aşağıdaki gibi bir kod bloğu yazdım ama hata alıyorum nerede yanlış yaptım anlamadım. bakabilir misiniz?

"End If WithOut Block If" hatası veriyor.


Private Sub CommandButton1_Click()
Dim i As Long
Me.ListBox1.Clear
'For Column Header
Me.ListBox1.AddItem
For a = 1 To 2
Next a
Me.ListBox1.Selected(0) = True

'For ListBox Fill
For i = 2 To Sheet1.Range("A100000").End(xlUp).Offset(1, 0).Row
For j = 1 To 5
H = Application.WorksheetFunction.CountIf(Sheet1.Range("A" & 2, "B" & i), Sheet1.Cells(i, j))
If H = 1 And LCase(Shhet1.Cells(i, j)) = LCase(Me.TextBox1) Or H = 1 And Sheet1.Cells(i, j) = Val(Me.TextBox1) Then Me.ListBox1.AddItem
For x = 1 To 5
Me.ListBox1.List(ListBox1.ListCount - 1, x - 1) = Sheet.Cells(i, x)
Next x
End If
Next j
Next i
End Sub
 

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
End If
yazan satırı silip deneyin.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Koyu renkli satır fazla gibi gözüküyor.Onu iptal edip deneyiniz.:cool:
Private Sub CommandButton1_Click()
Dim i As Long
Me.ListBox1.Clear
'For Column Header
Me.ListBox1.AddItem
For a = 1 To 2
Next a
Me.ListBox1.Selected(0) = True

'For ListBox Fill
For i = 2 To Sheet1.Range("A100000").End(xlUp).Offset(1, 0).Row
For j = 1 To 5
H = Application.WorksheetFunction.CountIf(Sheet1.Range("A" & 2, "B" & i), Sheet1.Cells(i, j))
If H = 1 And LCase(Shhet1.Cells(i, j)) = LCase(Me.TextBox1) Or H = 1 And Sheet1.Cells(i, j) = Val(Me.TextBox1) Then Me.ListBox1.AddItem
For x = 1 To 5
Me.ListBox1.List(ListBox1.ListCount - 1, x - 1) = Sheet.Cells(i, x)
Next x
End If
Next j
Next i
End Sub
 

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
Değerli Hocalarım Sildim ama yine aynı hatayı veriyor.
 

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
If H = 1 And LCase(Shhet1.Cells(i, j))

If H = 1 And LCase(Sheet1.Cells(i, j))
düzeltin

Me.ListBox1.List(ListBox1.ListCount - 1, x - 1) = Sheet.Cells(i, x)

Me.ListBox1.List(ListBox1.ListCount - 1, x - 1) = Sheet1.Cells(i, x)

düzeltin

End IF
satırını tamamen silin
 
Son düzenleme:

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
Merhaba, Ekli dosyada "End If WithOut Block If" hatası veriyor. Ne yaptıysam çalıştırmayı başaramadım. Yardımcı olabilir misiniz?

Private Sub CommandButton1_Click()
Dim i As Long
Me.ListBox1.Clear
'For Column Header
Me.ListBox1.AddItem
For a = 1 To 2
Next a
Me.ListBox1.Selected(0) = True

'For ListBox Fill
If H = 1 And LCase(Sheet1.Cells(i, j)) = LCase(Me.TextBox1) Or H = 1 And Sheet1.Cells(i, j) = Val(Me.TextBox1) Then Me.ListBox1.AddItem
For i = 2 To Sheet1.Range("A100000").End(xlUp).Offset(1, 0).Row
Next i
For j = 1 To 5
H = Application.WorksheetFunction.CountIf(Sheet1.Range("A" & 2, "B" & i), Sheet1.Cells(i, j))
Next j
For x = 1 To 5
Me.ListBox1.List(ListBox1.ListCount - 1, x - 1) = Sheet1.Cells(i, x)
Next x
End If
End Sub
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
İstediğiniz (olması gereken) tam olarak nedir acaba?
-- Form ilk açıldığında sayfadaki veriler (hangi sütundakiler, A mı, B mi, yoksa her ikiside mi?) LİSTBOX'ta görüntülenecek mi?
-- Textbox'a yazdıktan sonra düğmeye tıklandığında, textbox'a yazılan veri hangi sütunda aranacak?
-- Arama, İÇERİR mantığıyla mı olacak yoksa İLE BAŞLAR mantığıyla mı yapılacak?
.
 

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
Hocam, Aslında istediğim, TextBoxa hangi sokak adını yazarsam Listboxda Listelesin. Yapmak istediğim aslında ekli örnek dosyada daha iyi göreceksiniz. Bu dosyadaki gibi arama yaptığımda gelen sokak ismine çift tıkladığımda TaxtBoxa almak istiyorum.
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Nihai cevap 15 numaralı cevapta.
Rich (BB code):
KODLAR 15 numaralı cevapta
 
Son düzenleme:

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
İlk örnek belgenize göre cevap yazıyorum.

Userformun kod bölümünde mevcut kodları silip aşağıdakileri yapıştırın.
CommandButton'a da gerek yok, TextBox'a yazdıkça işlem yapılır.

Arama alanı sadece A sütunu ise, kırmızı renklendirdiğim kısımları silin.
Kodlar, aşağıdaki haliyle İÇERİR mantığıyla A ve B sütununda arama yapar.
Rich (BB code):
Private Sub TextBox1_Change()
If Me.TextBox1 = "" Then
    ListBox1.RowSource = "Shhet1!A2:B" & Sheets("Shhet1").Cells(Rows.Count, 1).End(3).Row
    Exit Sub
End If
Me.ListBox1.RowSource = ""
If Sheets("Shhet1").AutoFilterMode = True Then Sheets("Shhet1").AutoFilterMode = False
sonsat = Sheets("Shhet1").Cells(Rows.Count, 1).End(3).Row
For sat = 2 To sonsat
    degA = Sheets("Shhet1").Cells(sat, 1)
    degB = Sheets("Shhet1").Cells(sat, 2)
    aranan = "*" & Me.TextBox1.Text & "*"
    If degA Like aranan Or degB Like aranan Then
        Me.ListBox1.AddItem
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) = degA
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = degB
    End If
Next
End Sub

Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 2
ListBox1.RowSource = "Shhet1!A2:B" & Sheets("Shhet1").Cells(Rows.Count, 1).End(3).Row
End Sub

Teşekkür ederim Ömer Hocam.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Estağfurullah,
sorularınızı bu şekilde parça parça sorarsanız daha hızlı nihai sonuca ulaşabilirsiniz.
Aynı soruyu asıl belgeniz/asıl userform ile sorsaydınız sonuç almanız biraz daha zor olurdu diye düşünüyorum.
İyi çalışmalar.
.
 

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
Estağfurullah,
sorularınızı bu şekilde parça parça sorarsanız daha hızlı nihai sonuca ulaşabilirsiniz.
Aynı soruyu asıl belgeniz/asıl userform ile sorsaydınız sonuç almanız biraz daha zor olurdu diye düşünüyorum.
İyi çalışmalar.
.

Hocam, Bir sorum olacaktı. Listboxta az önce verdiğiniz kodları diğer projeye dahil ettim, Ama sıkıntım şu; Listbox üzerine sadece 56 adet kayıt getiriyor. Tüm sokak adlarını getirmiyor.
 

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
Merhaba Hocam, Kodları bu şekilde yaptığımda Veritabanı sayfsından ListBoxa verileri aldım, Ama süz işlemi sırasında A2 kolonundan veri alıyor. Ekli resim dosyasındaki gibi Listbox açıldığında sokak isimleri geliyor. Ancak süz işlemi sırasında resimdeki gibi oluyor.

Private Sub txtFilter_Change()
If Me.txtFilter = "" Then
lstDetail.RowSource = "VeriTabanı!AR23:AS1797" & Sheets("VeriTabanı").Cells(Rows.Count, 1).End(3).Row
Exit Sub
End If
Me.lstDetail.RowSource = ""
If Sheets("VeriTabanı").AutoFilterMode = True Then Sheets("VeriTabanı").AutoFilterMode = False
sonsat = Sheets("VeriTabanı").Cells(Rows.Count, 1).End(3).Row
For sat = 2 To sonsat
degA = Sheets("VeriTabanı").Cells(sat, 1)
degB = Sheets("VeriTabanı").Cells(sat, 2)
aranan = "*" & Me.txtFilter.Text & "*"
If degA Like aranan Or degB Like aranan Then
Me.lstDetail.AddItem
Me.lstDetail.List(Me.lstDetail.ListCount - 1, 0) = degA
Me.lstDetail.List(Me.lstDetail.ListCount - 1, 1) = degB
End If
Next

End Sub

Private Sub UserForm_Initialize()
lstDetail.ColumnCount = 2
lstDetail.RowSource = "VeriTabanı!AR23:AS1797" & Sheets("VeriTabanı").Cells(Rows.Count, 1).End(3).Row
End Sub
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Kafamda tam olarak oturtmuş değilim ama;
üstte görünen listbox olan userform'un initalize kodlarında;
alttaki mahalle adının, ilgili sayfadaki başlangıç satırı ile bitiş satırını tespit edip
aradaki verileri RowSource yöntemiyle, üstteki userformdaki listbox'a alıp
(listbox'ta 2 sütuna gerek yok diye düşünüyorum, zaten sadece ilgili mahallenin sokakları listeleniyor olacak),
Arama işlemini de;
1. seçenek: listbox'taki değerler arasında yaptırmak,
2. seçenek: Textbox change kodlarındaki koşul satırına bir koşul daha ekleyerek
( If mahalle adı AND sokak adı Then gibi ) sayfadaki değerler arasında yaptırmak.
1'inci seçenekte yaşamanız muhtemel sorun, verinin sayfadaki konumunun buldurulması,
2'nci seçenekte muhtemel sorun ise işlemin daha yavaş yürümesi ihtimali.
.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Tekrar merhaba.

Asıl belgenize şöyle bir baktığımda;
-- UserForm1'in kodlarına TextBox3_DbClick eklemek (aşağıdaki ilk kod bloku) ve GÜNCELLE seçeneği işaretli iken
mahalle TextBox'una çift tıklamayla Userform2'yi açtırıp,
-- UserForm2'de de önceki cevabımdaki yapıyı kullanmak
pratik/hızlı olacak gibi görünüyor.

Sokağı Textbox'a yazarak buldurduk diyelim,
bu kez listboxta sokak adına fareyle çift tıklama sonucunda bu sokak adı nereye yazılacaksa ona göre ilave yapılmalıdır.
Rich (BB code):
Private Sub TextBox3_DblClick(ByVal Cancel As MSForms.ReturnBoolean)    'USERFORM1 mahalle TextBox'ait ÇİFT TIKLAMA MAKROSU
    UserForm2.Show
End Sub

Private Sub TextBox1_Change()    'USERFORM2 arama TextBox'una ait ARAMA MAKROSU
If UserForm2.ListBox1.ListCount = 0 Then
    MsgBox "Doğrudan bu userformu kullanamazsınız." & vbLf & _
        "Randevu sayfasında veri olan bir hücre seçerek işleme başlanmalıdır.", vbCritical, "..:: Ömer BARAN :..."
    Unload UserForm2
    Exit Sub
End If
mahilk = WorksheetFunction.Match(UserForm1.TextBox3.Text, Sheets("VeriTabanı").[AR:AR], 0)
mahson = mahilk - 1 + WorksheetFunction.CountIf(Sheets("VeriTabanı").[AR:AR], UserForm1.TextBox3.Text)
If Me.TextBox1 = "" Then
Me.ListBox1.RowSource = "Veritabanı!AS" & mahilk & ":AS" & mahson
    Exit Sub
End If
Me.ListBox1.RowSource = ""
For sat = mahilk To mahson
    degA = Sheets("VeriTabanı").Cells(sat, "AS")
    aranan = "*" & Me.TextBox1.Text & "*"
    If degA Like aranan Then
        Me.ListBox1.AddItem
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) = degA
    End If
Next
End Sub

Private Sub UserForm_Initialize()    'USERFORM2 AÇILIŞ MAKROSU
If UserForm1.TextBox3 <> "" Then
    mahilk = WorksheetFunction.Match(UserForm1.TextBox3.Text, Sheets("VeriTabanı").[AR:AR], 0)
    mahson = mahilk - 1 + WorksheetFunction.CountIf(Sheets("VeriTabanı").[AR:AR], UserForm1.TextBox3.Text)
Me.ListBox1.RowSource = "Veritabanı!AS" & mahilk & ":AS" & mahson
Else
    Me.ListBox1.RowSource = ""
End If
End Sub
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Sayfayı yenileyerek bir önceki cevabımı tekrar kontrol ediniz.
Küçük ilaveler yaptım.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Hangi durumda bu hatayı aldınız acaba?
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
UserForm1'de YENİ GİRİŞ ve KAYIT GÖRÜNTÜLE/GÜNCELLE seçeneklerinden hangisi seçiliyken,
ikincisi seçili ise Combobox'taki RANDEVU kodlarından biri seçiliyken mi?, Randevu seçiniz yazısı görünüyorken mi?

Biraz datay verin.

Hangi durumda, TextBox3_Double Click çalışacak/çalışmayacaksa, kodların girişinde bu durumlara ilişkin istisna IF satırları yazılarak hallediebilir diye düşünüyorum.
.
 
Üst