Compile Error hatası

Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Private Sub ComboBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
For Each malzeme In Worksheets("MLZ_KOD").Range("C:C")
If malzeme = "" Then GoTo bitir
If malzeme = ComboBox4 Then
TextBox1 = malzeme.Offset(0, -1)
'TX_BIRIM = malzeme_ismi.Offset(0, 2)
'TX_KDV = malzeme_ismi.Offset(0, 3)
'TX_BIRIM_FIYAT = malzeme_ismi.Offset(0, 4)
'TX_MIKTAR.SetFocus

End If
Next
bitir:
End Sub

Selam arkadaşlar yukarıda kodların aynı örneği userform1 de combobox1 exit olayında var çalışıyor.
Fakat aynı kodları userform2 de combobox4 exit olayına gelip gerekli düzeltmeleri yapmama rağmen Compile Error hatası veriyor. çok uğraşmama rağmen düzeltemedim. Acaba benim gözümden kaçan bir şey varmı. Bakıp bana bilgi verirseniz sevinirim. Teşekkürler
 
S

Skorpiyon

Misafir
malzeme değişkenine bu tür atama yapılamaz.

Set komutunu kullanınız.

Bu satırda hata mesajı alırsınız.

TextBox1 = malzeme.Offset(0, -1)

Saygılarımla...
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Ama User Form1 da atadım ve çalıştı ve hala çalışıyor userform2 de neden çalışmadı set komutunu yeterince bilmiyorum onunla nasıl atayabilirm.
 
S

Skorpiyon

Misafir
Denemediğim için bilemiyorum ama
for each'ı kaldırarak yerine,

dim malzeme as range
set malzeme = Worksheets("MLZ_KOD").Range("C:C")

olarak bir deneyiniz.
 
S

Skorpiyon

Misafir
unutmadan, en son satırda;
set malzeme = nothing
komutunu ekleyiniz.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Tesadüfen de olsa; bu kod bloğunda malzeme adlı nesne değişkenini, Set etmeye gerek yok. malzeme nesnesi bir hücreyi, temsil ediyor ve alttaki satırlarda, örneğin if malzeme.Value=Combobox4.Text then gibi bir kodlama yapılacağına, yine geçerli olan if malzeme=Combobox4 then kullanılmış. Bu problem yaratmaz.

Kod hatalı bile olsa, bu tip bir Derleme Hatası vermez.

Userformun başka bir kodundan veya bileşeninden kaynakalnıyor olabilir.

Lütfen, bu hatayı ne yaparken, nerede aldığınızı da belirtin.
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Aynen dediğiniz gibi Sayın fpc Zaten Dediğim gibi Userform1 de combobox1 exit olayında de kullanıyorum ve hatasız çalışıyor. Gel gelelim aynı kitapta Userform2 de de kullanmak istedim ve combobox4 isimli nesnemin exit olayında bu kodları uyarlayarak yazdım ve bu hatayı programımı çalıştırdığım zaman bir malzeme seçip çıktığım anda bu hatayı veriyor ve Private Combobox4 exit satırı sarıyo boyalı ve malzeme isimli değişkende seçilmiş olarak hata karşıma çıkıyor. örnek olması için dosyamı ekte gönderiyorum. teşekkürler.
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Dosya Mi Ornek Olsami AÇisindan Ekte Sunuyorum.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Ya, Userform2'nin kod sayfasındaki ilk satırı (Option Explicit) silin

Ya da, Private Sub ComboBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) satırından sonra Dim malzeme As Range yazın.

NOT : Bende, Değişken tanımlama hatası (Variable not defined) verdi.
 
S

Skorpiyon

Misafir
Sayın fpc,

TextBox1 = malzeme.Offset(0, -1)

Set komutu olmadan bu satırda malzeme değişkenine atama yapılmadığından hata alınır.

Saygılarımla...
 
S

Skorpiyon

Misafir
TextBox1 = malzeme.Offset(0, -1)

Bu komutta Offset bir nesneye ait özelliktir. malzeme ise nesne değil değişken konumundadır. Siz hücreyi yani Offset(0,-1)i malzeme'ye atadınız ama bir nesne olarak değil, bir değişken olarak. Değişkenler nesne özelliği taşımayacaklarından komut hata veriyor.

Saygılarımla...
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Ya, Userform2'nin kod sayfasındaki ilk satırı (Option Explicit) silin

Ya da, Private Sub ComboBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) satırından sonra Dim malzeme As Range yazın.

NOT : Bende, Değişken tanımlama hatası (Variable not defined) verdi.
Çok teşkkür ederim sayın fpc dediğiniz gibi yapınca düzeldi. Öğleden beri beni deli etti sormayın.
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Bir sorum daha olacaktı Combobox4 de aynı anda hem kodu hemde adı görüntüleyebilirmiyim. Burda sormamım nedeni siz konuya vakıf olduğuz şimdi biliyorsanız yardımcı olursanız sevinirim tekrar.
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
yani combobox4 açılınca GY001 HÜRRİYET GİBİ
 
S

Skorpiyon

Misafir
Hmm, galiba ben yanılmışım. Tebrikler Sayın fpc, Kolay gelsin Sayın a self lion.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Bir sorum daha olacaktı Combobox4 de aynı anda hem kodu hemde adı görüntüleyebilirmiyim. Burda sormamım nedeni siz konuya vakıf olduğuz şimdi biliyorsanız yardımcı olursanız sevinirim tekrar.
Tabi ki gösterilebilir. Ama, kodlarınızı değiştirmeniz gerekebilir. Örnek olması açısından; size uygun olarak, şöyle birşey olabilir.

Kod:
ComboBox4.ColumnCount = 2
ComboBox4.ColumnWidths = "50;100"
ComboBox4.RowSource = "MLZ_KOD!B2:C" & sonhucre
 
Üst