• DİKKAT

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

Userform girilen kayıtları listbox'ta ve excel sayfasında

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
Merhaba.

ekteki gibi bir userform'um var. ağırlıklı sitemizden olmak üzere örnekler yardımıyla bir noktaya kadar geldim. fakat çok zorlamama rağmen sağlıklı çözüm üretmeediğim aşağıdaki konularda yardıma ihtiyacım var.

dosya "enable macros" diyerek açıldıktan sonra gelen userform ile kullanıcı kodu ve şifre girişi yapılarak kayıt giriş formuna ulaşılıyor. sahaların önemli bir kısmı combobox aracılığı ile seçilerek kayıt girişi yapılıyor. kayıt eklendikçe dosyadaki "kayıtlar" sayfasına kaydediliyor.

kayıt girişi yapıldıktan sonra formdan çıkılması ve tekrar girilmesi halinde listbox'ta girilen kayıtlar (sadece kullanıcının kendi girdiği kayıtları görebilmesi için, kullanıcı koduna göre excelde filtrelenerek) görüntüleniyor. bu filtreleme işlemi için bulduğum bir koddan yararlandım.

dosyada sadece "veri giriş" sayfası açık. diğer sayfalar görüntülenmiyor ve kodlar da görüntülenemediği için gizli sayfalar da açılamıyor. tüm dinamik alan ve şifre bilgileri "kaynak" isimli sayfada yer almakta.

1- listbox'ta sütun başlıklarının getirilmesi (columnheads)
2- kayıt eklendikçe listbox'ın güncellenmesi
3- lisbox'ta her bir hücrenin düzeltilebilmesi,
4- bu düzeltmelerin kayıtlar sayfasındaki ile hücrelere de yansıtılması,

konularında yardıma ihtiyacım var.

bir diğer husus ise bazı kullanıcılara "veri giriş" sayfası yanında "kayıtlar" sayfasını da görüntüleme yetkisi vermek istiyorum. "kaynak" sayfası sadece bana özel olacak. :)

açılış sayfasında kullanıcı ve şifre bilgileri yer almakla birlikte ADİL ve 1111 girilerek form açılabilir.

formu kapat düğmesi tıklandığında excel normal görünüme dönmektedir.

şimdiden teşekkür ederim.
 

Ekli dosyalar

Sorularınıza aşağıda verdiğim cevapları uygulayarak sonuç alabilirsiniz. Özellikle bu şekilde bir cevap veriyorum. Amacım, uygulamayı kendiniz yaparak bilginizi geliştirebilmenize katkıda bulunmaktır.

1- listbox'ta sütun başlıklarının getirilmesi (columnheads)

Bunun için verileri listboxa rowsource metodu ile almanız gerekli. Benim önerim, bir gizli sayfa oluşturun. Süzülen verileri bu sayfaya kopyalatın ve listboxa rowsource metodu ile bu gizli sayfadan yükleme yapın.

2- kayıt eklendikçe listbox'ın güncellenmesi

Bunun için "kayıt ekle" butonunundaki satırların sonuna 1.mesajımda belirttiğim mantıkla listboxa verileri yükleyen komutları tekrar yazın.

3- lisbox'ta her bir hücrenin düzeltilebilmesi,
4- bu düzeltmelerin kayıtlar sayfasındaki ile hücrelere de yansıtılması,

a- Sayfa üzerinde kayıtın değiştirilebilmesi için bu kayıtın hangi satırda bulunduğunun bilinmesi gerekir. Eğer listbox, sayfadaki tüm kayıtları içeriyor olsaydı bu durumda satır nosunu bulmak için listboxun "listindex" değeri kullanılabilirdi. Ancak sizin örneğinizde olduğu gibi süzülmüş veriler sözkonusu ise bu durumda, satır nosunu bulmak için herbir satırdaki kayıtınızı ifade eden bağımsız bir numara kullanmak durumundasınız. Bunun için, öncelikle "kayıtlar" sayfadaki verilerin hangi satırda olduğunun bulunabilmesini sağlayan ve tekrarsız sayılar içeren bir kolon ekleyin. Bu kolon sıra no yada id no gibi bir isim taşıyabilir.

b- Userforn üzerine değiştirme işlemini yapacak bir buton ilave edin. Bu butona örneğin "değiştir" ismini verebilirsiniz.

c- Listboxın sütun sayısı ilave kolonuda içerecek şekilde arttırın, yüklemenin bu kolonuda içerecek şekilde yapılmasını sağlayın.

d- Düzeltilecek kayıta ait verileri geri çağırmak için listboxun click olayına seçilen verileri ilgili combobox ve textboxlara aktaracak kodlar yazın. Örneğin,

cboKod=listbox1.colum(1) gibi.

Not: listbox1.column(0) sütununda sayfadaki kayıt sırasının bulunduğu öngörülmüştür.

e- Değiştir butonuna sayfa üzerine kaydın üzerine yazacak kodları yazın. Yapmanız gereken sadece dosyanızdaki "Kayıt ekle" butonuna yazılı kodlar içindeki "LR" değişkenine seçilen verinin satır nosunu aktaran bir ilave yapmaktır. Bunuda LR=listbox1.column(0) satırı ile yapabilirsiniz.
 
Levent Bey,
zaman ayırıp detaylı cevap verdiğiniz için teşekkür ederim.
umarım beceririm.
 
merhaba.

becerdim :)

kayıt silme işlemi ekledim.

deişikliklerin ve silinen kayıtların ayrı sayfalara kopyalanmasını da sağladım.

şifre değiştirme işlemi için ayrı bir UF ekledim.

normal kullanıcılar sadece veri giriş sayfasını görebiliyor.

YÖNETİCİ olarak tanımladığım kullanıcı girilen, silinen ve değiştirilen tüm kayıtları görebiliyor.

XKODX ise ben oluyorum ve tüm sayfaları görebiliyorum.

burada görüntülenebilmesii için veri giriş sayfasına koyduğum kullanıcı kodu ve şifrelerini sildikten ve kodların görüntülenmemesi için şifre koyduktan sonra inşallah kullanmaya başlayacağım.

olur da buna benzer bir çalışmaya iihtiyaç duyan olur ise tüm kodları gözden geçirerek sayfa isimlerini, klasör isimlerini, hepsi ismlendirilen UF nesnelerini diikkate alarak uyarlama yapabilir.

değerli yönlendirmesi için Levent Bey'e tekrar teşekkür ederim.
 
Tekrar merhaba.

mükerrer kayıt girişinin engellenmesi amacıyla kayıt ekleme ve kayıt düzeltme kodlarını nasıl düzenlemeliyim?

1 sütun için örnekler buldum ama benim örneğimde 4 sütunda birden aynı anda eşleşme olur ise işlem yapımadan formun içinde kalınması


bulduğum bir örnekten aşağıdaki gibi bir kod denedim ama RTE 13 "Type Mismatch" hatası alıyorum.

Kod:
Dim vKod As Integer, vKyt As String, vUrun As String, vNed As String
vKod = cboKod.Value
vKyt = cboKyt.Text
vUrun = cboUrun.Text
vNed = cboNed.Text

If Application.Evaluate("SumProduct((wksKayıtlar!B:B=" & vKod & ")*(wksKayıtlar!E:E=" & """" & vKyt & """" & ")*(wksKayıtlar!F:F=" & """" & vUrun & """" & ")*(wksKayıtlar!G:G=" & """" & vNed & """" & "))") > 0 Then

    MsgBox "Mükerrer Kayıt" _
    & Chr(10) & Chr(10) & "Lütfen kontrol ediniz!", vbCritical, "XX AŞ"
    Exit Sub
Else
' Normal kayıt ve girilen kaydı boşaltma kodları

End If
 
kurcalaya kurcalaya şöyle bir şey ortaya çıktı.
bu tırnak işaretlerini doğru kullanmayı bir türlü öğrenemeyeceğim galiba. :)

kayıt ekleme düğmesi için:
Kod:
Dim vKod As Integer, vKyt As String, vUrun As String, vNed As String
Dim r1 As String, r2 As String, r3 As String, r4 As String

vKod = cboKod.Value
vKyt = cboKyt.Text
vUrun = cboUrun.Text
vNed = cboNed.Text

r1 = "'Kayıtlar'!B2:B65536"
r2 = "'Kayıtlar'!E2:E65536"
r3 = "'Kayıtlar'!F2:F65536"
r4 = "'Kayıtlar'!G2:G65536"

If Evaluate("SumProduct((" & r1 & "=" & cboKod.Value & ")*(" & r2 & "=""" & cboKyt.Text & """)*(" & r3 & "=""" & cboUrun.Text & """)*(" & r4 & "=""" & cboNed.Text & """))") > 0 Then
    MsgBox "Mükerrer Kayıt" _
    & Chr(10) & Chr(10) & "Lütfen kontrol ediniz!", vbCritical, "XX AŞ"
    Exit Sub
Else
    'girilen kayıtların listeye kopyalanması
    With wks
        .Cells(son_sat, 1).Value = Application.Max(wks.Range("A:A")) + 1
        .Cells(son_sat, 2).Value = cboKod.Value
        .Cells(son_sat, 3).Value = cboKod.List(cKod, 1)
        .Cells(son_sat, 4).Value = cboKod.List(cKod, 2)
        .Cells(son_sat, 5).Value = cboKyt.Value
        .Cells(son_sat, 6).Value = cboUrun.Value
        .Cells(son_sat, 7).Value = cboNed.Value
        .Cells(son_sat, 8).Value = txtQty.Value
        .Cells(son_sat, 9).Value = txtKull.Value
        .Cells(son_sat, 10).Value = txtDate.Value
    End With
    'yeni kayıt için hücrelerin boşaltılması
    cboKod.Value = ""
    cboKyt.Value = ""
    cboUrun.Value = ""
    cboNed.Value = ""
    txtDate.Value = Format(Date, "dd.mm.yyyy")
    txtQty.Value = CDbl(1)
    txtKull.Value = uf_pass.cboKull.Value
    cboKod.SetFocus
End If
 
kayıt değişiklik düğmesi için:
Kod:
Dim vKod As Integer, vKyt As String, vUrun As String, vNed As String
Dim r1 As String, r2 As String, r3 As String, r4 As String

vKod = cboKod.Value
vKyt = cboKyt.Text
vUrun = cboUrun.Text
vNed = cboNed.Text

r1 = "'Kayıtlar'!B2:B65536"
r2 = "'Kayıtlar'!E2:E65536"
r3 = "'Kayıtlar'!F2:F65536"
r4 = "'Kayıtlar'!G2:G65536"

If Evaluate("SumProduct((" & r1 & "=" & cboKod.Value & ")*(" & r2 & "=""" & cboKyt.Text & """)*(" & r3 & "=""" & cboUrun.Text & """)*(" & r4 & "=""" & cboNed.Text & """))") > 0 Then
    MsgBox "Mükerrer Kayıt" _
    & Chr(10) & Chr(10) & "Lütfen kontrol ediniz!", vbCritical, "XX AŞ"
    Exit Sub
Else
    'değişikliklerin seçilen kaydı sayfada etkilemesi
    With wks
        .Cells(deg_sat, 2).Value = cboKod.Value
        .Cells(deg_sat, 3).Value = cboKod.List(cKod, 1)
        .Cells(deg_sat, 4).Value = cboKod.List(cKod, 2)
        .Cells(deg_sat, 5).Value = cboKyt.Value
        .Cells(deg_sat, 6).Value = cboUrun.Value
        .Cells(deg_sat, 7).Value = cboNed.Value
        .Cells(deg_sat, 8).Value = txtQty.Value
        .Cells(deg_sat, 9).Value = txtKull.Value
        .Cells(deg_sat, 10).Value = txtDate.Value
    End With
End If
 
kod hata veriyor yardımcı olurmusunuz

ilginize şimdiden teşekkür ederim
 
Son düzenleme:
Geri
Üst