• DİKKAT

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

Userformdan Userforma veri aktarımı

  • Konbuyu başlatan Konbuyu başlatan misnet
  • Başlangıç tarihi Başlangıç tarihi
Katılım
1 Mart 2011
Mesajlar
56
Excel Vers. ve Dili
excell
Sevgili arkadaşlar

Şöyle bir problemim var yardımcı olabilirseniz sevinirim.

Ekteki dosyada Userform3 teki combobox ve textboxlara veri girdiğim anda aynı verileri Userform1 deki "Hasta İzin Formuna" işlesin ve Userform3 teki İzin formu yazdır butonuna basıncada formu bilgileri ile yazdırıp çıkartsın mümkünmüdür.

yardımlarınız için şimdiden teşekkür ederim.
 

Ekli dosyalar

UserForm3'e bir CommandButton ekleyin
isterseniz isim verin. üzerine çift tık ile koduna geçin ve:

Kod:
Private Sub CommandButton86_Click()
UserForm1.Show
End Sub


UserForm1'in kod modülüne ise:

Kod:
Private Sub UserForm_Initialize()

TextBox5.Value = UserForm3.ComboBox1.Value
TextBox3.Value = UserForm3.ComboBox2.Value
'diğer...
'diğer...
'diğer...

End Sub

UF1'de ne çıkmasını istiyorsanız ilgili kontrollere UF3'teki ilgili kontrollerin değerlerini atayın...
 
Seçime göre veri aktarımı

sayın mancubus yazdığınız kodlar proğramı çalıştırdı çok teşekkür ederim.

Yalnız iki noktada eksiklik var bu konudada yardımcı olabilirseniz minnettar olurum.

1.konu: Userform3'te adı soyadını seçtiğimde "kayıt" sayfasından o isme ait sicil numarası (combobox2'ye) otomatik gelsin.
2.konu: Userform3'te adı soyadını seçtiğimde "kayıt" sayfasından o isme ait Hizmet yılı (textbox15'e) otomatik gelsin.

Userform 3 te istenen bölümleri sarı renge boyadım. Saygılar
 

Ekli dosyalar

Kod:
Private Sub ComboBox1_Change()

Dim rng As Range, ssat As Long

With Sheets("Kayıt")
    ssat = .Range("A" & .Rows.Count).End(xlUp).Row
    Set rng = .Range("A5:C" & ssat)
End With

ComboBox2.Value = Application.VLookup(ComboBox1.Value, rng, 2, 0)
TextBox15.Value = DatePart("yyyy", Application.VLookup(ComboBox1.Value, rng, 3, 0))

End Sub

kapat butonunun da kodu yok:

Kod:
Private Sub CommandButton61_Click()
Unload Me
End Sub
 
Seçime göre veri aktarımı

Sayın hocam ben derdimi eksik anlattım heralde, şunu demek istedim;

1.konuyu çözmüşsünüz teşekkür ederim.

2.konu: Userform3'te adı soyadını seçtiğimde "kayıt" sayfasından o isme ait Hizmet yılını bugünün tarihinden düşerek (textbox15'e) yazacak

ÖRNEK: 2012(bugün)-1987(işe başlama tarihi)=25 (hizmet yılı) olacak
textbox15 te 25 rakamı gözükecek

ilginize teşekkür ederim.
 

Ekli dosyalar

Kendinize uyarlayınız.:cool:
Kod:
msgbox year(date)-year(range("A1").value)
 
aynı formatta olsun diyerek...

Kod:
TextBox15.Value = DatePart("yyyy", Date) - DatePart("yyyy", Application.VLookup(ComboBox1.Value, rng, 3, 0))
 
Veri Aktarımı

Sayın Hocam Buraya kadar her şeyi uyguladım çok güzel çalışıyor.
bu konuda size son bir kez bir soru daha soracağım. Çünkü bu tarihler konusunda oldukça yetersiz olduğumu kabul edersiniz. Bu konudada yardımınızı esirgemezseniz minnettar kalırım. Şimdiden teşekkürler.Sorum Şu:

1.Soru: Userform3 te ismini seçtiğim kişinin bilgi sayfasındaki sadece o yıl içinde almış olduğu (Örn:2012) Sağlık Kurulu Raporlarının toplamını Userform1 deki Textbox15 e, Tek hekimce verilen raporların toplamını ise Userform1 deki Textbox22 ye yazacak.

2.Soru:Userform1 de Textbox34 te ki tarihin birgün sonraki tarihinide Textbox36 ya atacak

Proğramın son şekli ektedir.
Bu problemide çözerseniz herkesin farklı alanlarda kullanabileceği bir proğram olabilir. Herşey için teşekkürler. Saygılar.
 

Ekli dosyalar

userform3
Kod:
Private Sub ComboBox1_Change()

Dim rng As Range[COLOR="Red"], rngSK As Range, rngTH As Range, rngP As Range[/COLOR]
Dim ssat As Long[COLOR="red"], sat As Long[/COLOR]
On Error GoTo hata

With Sheets("Kayıt")
    ssat = .Range("A" & .Rows.Count).End(xlUp).Row
    Set rng = .Range("A5:E" & ssat)
End With

ComboBox2.Value = Application.VLookup(ComboBox1.Value, rng, 2, 0)
TextBox15.Value = DatePart("yyyy", Date) - DatePart("yyyy", Application.VLookup(ComboBox1.Value, rng, 3, 0))

[COLOR="red"]With Sheets("Bilgi")
    sat = .Range("B" & .Rows.Count).End(xlUp).Row
    Set rngP = .Range("B2:B" & sat)
    Set rngSK = .Range("H2:H" & sat)
    Set rngTH = .Range("I2:I" & sat)
End With
UserForm1.TextBox15.Value = Application.SumIf(rngP, ComboBox1, rngSK)
UserForm1.TextBox22.Value = Application.SumIf(rngP, ComboBox1, rngTH)[/COLOR]
hata:
End Sub


userform1

Kod:
Private Sub UserForm_Initialize()
...
...
...

TextBox34.Value = UserForm3.TextBox12.Value
[COLOR="Red"]TextBox36.Value = UserForm3.TextBox12.Value + 1[/COLOR]
...
...
...
 
Son düzenleme:
Sayın Mancubus

İlginize ve alakanıza çok teşekkür ederim. Ancak çalıştıramadım.bir eksiklikmi var.

Userform3 te iken Listbox1 den bir veri şeçip "Hastalık izin formuna" tıklandığı zaman tüm verileri Userform1 e atması gerekiyor ama bazı verileri atıyor bazılarını atmıyor. Formun son şeklini ekte gönderiyorum birde siz kontrol edebilirmisiniz. Teşekkürler. Saygılar.
 

Ekli dosyalar

dosyaya bakmadım.
balık yerine olta vereyim.
hangi verilerin gelip hangilerinin gelmediği belli.
gelenlerin kod satırlarını gelmeyenlere uyarlamak en uygun yöntem.
 
sayın mancubus

Kastetdiğiniz gibi olsa zaten uyarlardım, Gelen satırları gelmeyene göre ama proğramı çalıştırıp "HAsatalık İzin Formuna" tıkladığımda ilk seferinde sadece toplamı atıyor, kapatıp 2. defa tıkladığımda bu seferde diğer verileri atıyor önceki verileri siliyor. Biraz karışık yani.

Ama sizi usandırdım galiba, şimdiye kadar yapmış olduğunuz yardımlarınız için çok teşekkür ederim. Hakkınızı helal edin . Saygılar
 
sayın misnet.

konu usanma meselesi değil.

konu başlığına bakacak olur isek, "UF'dan, UF'a" veri aktarma. detaya baktığımızda, hangi kontrolden hangi kontrole veri aktarılacağı somut. bu sorunun cevabını verdim.

(benim tarzım açısından konu burada kapandı aslında. çünkü benim tercih ettiğim yöntemde tüm ihtiyaçlar ilk mesajda yazılır, cevap verme arzusunda olan üye bunu dikkate alarak konuya başlar veya başlamaz. bundan sonra detaydaki problemler çözülür.)

peşinden ikinci soru geldi. taksitli yöntemi hiç tercih etmediğim halde, soru yine somut olduğu için cevap verdim.


3. taksitte ise, kontrol ederek hataların düzeltilmesi gibi soyut bir talep geliyor.

bunu yapabilmek için belki tüm kodların gözden geçirilmesi, dosyaya yeniden hakim olunması gerekiyor. bu da zaman isteyen bir şey.

bazan elimizde hazır kod ve hatta örnek dosya oluyor, ihtiyaç sahibinin işini gören komple bir çalışma sunabiliyoruz. bazan de böyle satır satır giriliyor.


neyse...
kendi işimden çalarak yaklaşık 1 saat zaman ayırıp inceledim.

listbox'a tıklandığında UF3'teki kontrollere sayfadan veri yüklenmesi, UF1'e de buradan veri aktarılması gibi bir talep olduğunu gördüm.

yine bir önceki mesajımdaki noktadayım. hangisi geliyor, hangisi gelmiyor, somut dosyadaki örneklerin verilerinden bakmak lazım. bir kayıt için gelen verinin diğer bir kayıt için gelmemesi mümkün değil. ancak 0 veya boştur, veri uyuşmazlığı vb durum vardır, ondan olabilir.

soru2'deki kodu hem combo'nun change hem de UF1'in initialize olaylarına kopyalamışsınız.
UF1 açık olmadıkça combo da olmasının bir anlamı yok görünüyor.


benim bu konuya son mesajım olarak önerebileceğim kodları duruma göre sadeleştirmek ve problem çıkıyorsa denemek, denemektir.

UF3
Kod:
Private Sub ComboBox1_Change()

Dim rng As Range, rngSK As Range, rngTH As Range, rngP As Range
Dim ssat As Long, sat As Long

On Error GoTo hata

With Sheets("Kayıt")
    ssat = .Range("A" & .Rows.Count).End(xlUp).Row
    Set rng = .Range("A5:E" & ssat)
End With

ComboBox2.Value = Application.VLookup(ComboBox1.Value, rng, 2, 0)
TextBox15.Value = DatePart("yyyy", Date) - DatePart("yyyy", Application.VLookup(ComboBox1.Value, rng, 3, 0))

hata:

End Sub



UF1
Kod:
Private Sub UserForm_Initialize()

On Error Resume Next

With Sheets("Bilgi")
    sat = .Range("B" & .Rows.Count).End(xlUp).Row
    Set rngP = .Range("B2:B" & sat)
    Set rngSK = .Range("H2:H" & sat)
    Set rngTH = .Range("I2:I" & sat)
End With

TextBox5.Value = UserForm3.ComboBox1.Value
TextBox3.Value = UserForm3.ComboBox2.Value
TextBox8.Value = UserForm3.ComboBox3.Value
TextBox12.Value = UserForm3.ComboBox4.Value
TextBox33.Value = UserForm3.TextBox11.Value
TextBox34.Value = UserForm3.TextBox12.Value
TextBox17.Value = UserForm3.TextBox13.Value
TextBox24.Value = UserForm3.TextBox14.Value
TextBox28.Value = UserForm3.TextBox11.Value
TextBox27.Value = UserForm3.ComboBox4.Value
TextBox29.Value = UserForm3.TextBox13.Value + UserForm3.TextBox14.Value
TextBox35.Value = UserForm3.TextBox13.Value + UserForm3.TextBox14.Value
TextBox19.Value = UserForm1.TextBox15.Value + UserForm1.TextBox17.Value
TextBox26.Value = UserForm1.TextBox22.Value + UserForm1.TextBox24.Value
TextBox9.Value = UserForm3.TextBox15.Value
TextBox32.Value = UserForm3.TextBox16.Value
TextBox31.Value = UserForm3.TextBox17.Value
TextBox30.Value = UserForm3.TextBox11.Value
TextBox36.Text = Format(CDate(TextBox34.Value) + 1, "dd.mm.yyyy")
TextBox15.Value = Application.SumIf(rngP, ComboBox1, rngSK)
TextBox22.Value = Application.SumIf(rngP, ComboBox1, rngTH)

On Error GoTo 0

End Sub
 
sayın mancubus

Ben aslında tüm soruları bir mesajda gönderirsem anlaşılması zor olur diye parça parça göndermiştim. Sizi yordum Özür dilerim.
Biz amatörler bazen sizin için çok kolay olan bir soruyu soruyoruz. Bizlere katlandığınız içinde ayrıca teşekkür ederim.

Ama elinize sağlık Proğram tam istediğim gibi oldu ve çalışıyor. Saygılar hepinize ve size...........
 
Geri
Üst