• DİKKAT

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

ComboBox ile veri girişi

Katılım
10 Ağustos 2015
Mesajlar
8
Excel Vers. ve Dili
c++
Arkadaşlar Merhaba,
Sizlerin yardımına ihtiyacım var.
Ekte yer alan excel çalışmasına bir UserForm ekledim ancak ComboBox ile 2015 Eylül, 2015 Ekim gibi ay seçimini yaparak o döneme ait sutunlara UserForm vasıtası ile giriş yapmak istiyorum.
Buradaki birçok excel örneklerine ve kodlara baktım ancak tam olarak beceremedim, henüz bu işte çok acemiyim yardımlarınız bekliyorum.

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

Ekli dosyalar

  • MALİ TABLO.xlsm
    MALİ TABLO.xlsm
    31.4 KB · Görüntüleme: 11
  • MAKRO.JPG
    MAKRO.JPG
    138.5 KB · Görüntüleme: 7
Merhaba.
Uygun bir alana; 2015 OCAK, 2015 ŞUBAT....gibi dönem adlarını (Açılır Listede kullanmak üzere) yazın ve bu alanı FORMÜLLER menüsündeki AD TANIMLAMA kısmından "aylar" gibi bir isim vererek adlandırın ve formdaki ilk açılır listenin özelliklerindeki RowSource kısmına verdiğiniz bu adı yazın (bunun yerine aşağıdaki gibi kod ekranında da liste oluşturabilirsiniz)
Kod:
    With ComboBox1
        .AddItem "2015 OCAK"
        .AddItem "2015 ŞUBAT"
        .AddItem "2015 MART"
..............
.............
    End With
Ardından vba ekranında formdaki Metin Kutularına tek tek sağ tıklayıp "View Code "yi seçip;
Kod:
Private Sub TextBox1_Change()
  Me.TextBox1.Value = Format(Me.TextBox1.Value, "###,###")
End Sub

yazarak metin kutularına sayı yazarken binlik ayracı eklenmesini sağlamış olursunuz. Ardından KAYDET düğmesine sağ tıklayıp yine "View Code"yi seçin ve
Kod:
Private Sub CommandButton3_Click()
Dim a As Integer
Dim mt As Worksheet
Set mt = Sheets("MALİ TABLO")
a = WorksheetFunction.Match(ComboBox1.Value, mt.Range("b:b"), 0)
[COLOR="Red"]On Error Resume Next[/COLOR]
mt.Cells(a + 3, 6) = 0 + Format(TextBox1.Value, "#,##0.00")
mt.Cells(a + 4, 6) = 0 + Format(TextBox2.Value, "#,##0.00")
mt.Cells(a + 5, 6) = 0 + Format(TextBox3.Value, "#,##0.00")
mt.Cells(a + 6, 6) = 0 + Format(TextBox4.Value, "#,##0.00")
mt.Cells(a + 7, 6) = 0 + Format(TextBox5.Value, "#,##0.00")
mt.Cells(a + 8, 6) = 0 + Format(TextBox6.Value, "#,##0.00")
mt.Cells(a + 9, 6) = 0 + Format(TextBox7.Value, "#,##0.00")
mt.Cells(a + 10, 6) = 0 + Format(TextBox8.Value, "#,##0.00")
mt.Cells(a + 11, 6) = 0 + Format(TextBox9.Value, "#,##0.00")
....................
....................
End Sub
şeklinde devam ederek gerekli düzenlemeleri tamamlayın.
(Yukarıdaki "a=" kısmı seçilen dönemin kaçıncı satırda olduğunu tespit ediyor, onu baz alıp örneğin EYLÜL için 16 sayısı bulunur, a+3 19'uncu satır ilk Metin kutusunun veri yazacağı satırı, 6 sayısı ise sütunu yani F sütununu belirlemiş olur)
Kırmızı satır ise hata halinde bir sonraki adıma geçilmesini sağlar.
 
Dosyanızı Ömer beyin yol gösterdiği gibi kaydet butonu (CommandButton3_Click) kodlarınızı düzenleyerek devam ettiriniz.
 

Ekli dosyalar

Merhaba,
Öncelikle yardımlarınız için teşekkür ederim.
Dediklerinizi uyguladım ancak başarılı olamadım.
Sizden ricam eklediğim excel dosyasına ilgili kodları ekleyebilirseniz memnun olurum.
Şimdiden teşekkür ederim.
 
Eklediğim dosya ile verdiğiniz cevap arası 3 dakika.Biz elimizden gelen yardımı yapmaya çalışırız ancak dosyayı bitirmek durumunda değiliz. Lütfen size hazırlanan dosyayı inceleyip
Kod:
mt.Cells([COLOR="Red"]a + 3[/COLOR],[COLOR="Blue"] 6[/COLOR]) = 0 + Format([COLOR="DarkOrange"]TextBox[/COLOR]1.Value, "#,##0.00")
kırmızı ile belirtilen yer satırlar mor ile belirtilen yerler sütunlar (kolonlar), Turuncu ise o satıra ait sizin değer verdiğiniz (yazdığınız) textbox lar. Hadi bi gayret becerebilirsiniz....
 
Yardımınız için teşekkür ederim.
Ben Ömer Bey'in belirttiklerini anlayamadığım için o cevabı yazmıştım.
Ancak yazdığım cevaptan sonra sizin iletinizi gördüm. Lütfen yanlış anlamayın.
Şuan kodları anlamaya çalışıyorum, Tekrar teşekkürler.
 
Yardımınız için teşekkür ederim.
Ben Ömer Bey'in belirttiklerini anlayamadığım için o cevabı yazmıştım.
Ancak yazdığım cevaptan sonra sizin iletinizi gördüm. Lütfen yanlış anlamayın.
Şuan kodları anlamaya çalışıyorum, Tekrar teşekkürler.
 
Tekrar Merhabalar,
Ömer Bey' in yazdığı kodları sizin belirttiğiniz açıklamalara göre uyguladım, F18 ile F27 ye kadar olan satırlara veri girişi yapabiliyorum ancak L ve R sutunlarına yazdıklarımda veri ilgili sutuna yazılmıyor.
Ayrıca sadece Eylül 2015 seçimi yaptığımda sadece veri girişi F18 ile F27 ye yapılabiliyor örneğin Ekim ve 2015 combobox tan seçtiğimde F34 ile F42 ye giriş yapmak istiyorum bunları nasıl yapabilirim yardımcı olursanız sevinirim.
Yapabildiğim kadarı ile mevcut excel çalışması ektedir.
 

Ekli dosyalar

  • hata.JPG
    hata.JPG
    101.7 KB · Görüntüleme: 7
  • MALİ TABLO.xlsm
    MALİ TABLO.xlsm
    40.8 KB · Görüntüleme: 7
Şimdi bir şeyde anlaşalım. Üst mesajda kırmızılı yer satır nosu demiştim. Oradaki "a" sabit kalacak çünki yukarda kaydetmek istediğiniz yerin yerini belirliyor . Siz sadece "a+3 kırmızılı olan 3 de değişiklik yapacaksın. Yani "2015 EYLÜL" ü
Kod:
a = WorksheetFunction.Match(ComboBox1.Value, mt.Range("b:b"), 0)
buluyor. Bulunan yerden sonraki 3.cü satır anlamında oluyor. siz orayı gerektiği kadar 3,4,5 gibi ayarlayıp ondan sonra beşinci mesajdaki mor ile belirtilen "6" olanyeri (sütun) ayarlayacaksınız.
Bir kaç satırı örnek olarak yaptım. Mantığı anlamanız için.
Kod:
Private Sub CommandButton3_Click()
Dim a As Integer
Dim mt As Worksheet
Set mt = Sheets("MALİ TABLO")
b = ComboBox2.Text & " " & ComboBox1.Value
a = WorksheetFunction.Match(b, mt.Range("b:b"), 0)
On Error Resume Next
mt.Cells(a + 3, 6) = 0 + Format(TextBox1.Value, "#,##0.00")
mt.Cells(a + 4, 6) = 0 + Format(TextBox2.Value, "#,##0.00")
mt.Cells(a + 5, 6) = 0 + Format(TextBox3.Value, "#,##0.00")
mt.Cells(a + 6, 6) = 0 + Format(TextBox4.Value, "#,##0.00")
mt.Cells(a + 7, 6) = 0 + Format(TextBox5.Value, "#,##0.00")
mt.Cells(a + 8, 6) = 0 + Format(TextBox6.Value, "#,##0.00")
mt.Cells(a + 9, 6) = 0 + Format(TextBox7.Value, "#,##0.00")
mt.Cells(a + 10, 6) = 0 + Format(TextBox8.Value, "#,##0.00")
mt.Cells(a + 11, 6) = 0 + Format(TextBox9.Value, "#,##0.00")
'[COLOR="red"]mutfak masrafları[/COLOR]
mt.Cells(a + 3, 12) = 0 + Format(TextBox10.Value, "#,##0.00")
mt.Cells(a + 4, 12) = 0 + Format(TextBox11.Value, "#,##0.00")
mt.Cells(a + 5, 12) = 0 + Format(TextBox12.Value, "#,##0.00")
mt.Cells(a + 6, 12) = 0 + Format(TextBox13.Value, "#,##0.00")
'[COLOR="Red"]giyim gideri[/COLOR]
mt.Cells(a + 3, 18) = 0 + Format(TextBox14.Value, "#,##0.00")
'[COLOR="red"]yakıt gideri[/COLOR]
mt.Cells(a + 5, 18) = 0 + Format(TextBox15.Value, "#,##0.00")
End Sub

8 nolu mesajdaki hata yazım hatasıdır. Userform Kodlarındaki
Kod:
.AddItem [COLOR="Red"]"EKİM "[/COLOR]
satırda EKİM den sonraki boşluğu kaldırırsanız düzelir.
 
Son düzenleme:
Bilgisayar başnda değilim. Örneğin L sütununun sayısal karşılığı 12, o halde L sütunu için kodda Cells(....., 12) şeklinde yazmalısınız. R sütunu için, bu sayı sanırım 18 oluyor.
Ayrıca kodda kullandığınız bir değişken önce tanımlanmalıdır, bir de koddaki text ve value kısımlarında değişiklikler yaparak doğruyu bulacağınızı düşünüyorum.
 
Tekrar Merhabalar,
Şimdiye kadarki yardımlarınız için öncelikle teşekkür ederim.
Sayenizde azda olsa bir şeyler kavramaya başladım.
-Çalışmayı 1 senelik olacak şekilde revize ettim.
-UserFormda Formu temizle ve Çıkış butonları ekledim ve çalıştırabildim.

ComboBox tan Ocak seçtiğimde yazdığım veriyi Şubat ayının hücresine atıyor, örneğin Ekimi seçtiğimde Kasım ayına atıyor yazdığım veri doğru hücreye yazılıyor ancak tam bir ay kaydırma yaparak bu işlemi tamamlıyor, Sizce nerede hata yapmış olabilirim.

Ayrıca veri oku tuşuna bastığımda örneğin F19 da bir veri varsa bunu UserForm üzerinde görmek istiyorum bunu nasıl yapabilirim.
 

Ekli dosyalar

Sizdeki kodlar ile aşağıdakini değiştirip denermisiniz.
Kod:
Private Sub CommandButton3_Click()
Dim a As Integer
Dim mt As Worksheet
Set mt = Sheets("MALİ TABLO")
b = ComboBox2.Text & " " & ComboBox1.Value
a = WorksheetFunction.Match(b, mt.Range("b:b"), 0)
On Error Resume Next
mt.Cells(a + 3, 6) = 0 + Format(TextBox1.Value, "#,##0.00")
mt.Cells(a + 4, 6) = 0 + Format(TextBox2.Value, "#,##0.00")
mt.Cells(a + 5, 6) = 0 + Format(TextBox3.Value, "#,##0.00")
mt.Cells(a + 6, 6) = 0 + Format(TextBox4.Value, "#,##0.00")
mt.Cells(a + 7, 6) = 0 + Format(TextBox5.Value, "#,##0.00")
mt.Cells(a + 8, 6) = 0 + Format(TextBox6.Value, "#,##0.00")
mt.Cells(a + 9, 6) = 0 + Format(TextBox7.Value, "#,##0.00")
mt.Cells(a + 10, 6) = 0 + Format(TextBox8.Value, "#,##0.00")
mt.Cells(a + 11, 6) = 0 + Format(TextBox9.Value, "#,##0.00")
mt.Cells(a + 3, 12) = 0 + Format(TextBox10.Value, "#,##0.00")
mt.Cells(a + 4, 12) = 0 + Format(TextBox11.Value, "#,##0.00")
mt.Cells(a + 5, 12) = 0 + Format(TextBox12.Value, "#,##0.00")
mt.Cells(a + 6, 12) = 0 + Format(TextBox13.Value, "#,##0.00")
mt.Cells(a + 8, 12) = 0 + Format(TextBox14.Value, "#,##0.00")
mt.Cells(a + 10, 12) = 0 + Format(TextBox15.Value, "#,##0.00")
mt.Cells(a + 3, 18) = 0 + Format(TextBox19.Value, "#,##0.00")
mt.Cells(a + 5, 18) = 0 + Format(TextBox20.Value, "#,##0.00")
mt.Cells(a + 7, 18) = 0 + Format(TextBox21.Value, "#,##0.00")
mt.Cells(a + 8, 18) = 0 + Format(TextBox22.Value, "#,##0.00")
mt.Cells(a + 5, 23) = 0 + Format(TextBox23.Value, "#,##0.00")
mt.Cells(a + 6, 23) = 0 + Format(TextBox24.Value, "#,##0.00")
End Sub

Veri okumak için bir adet label ekleyin. eklediğiniz label kaç ise aşağıdaki kodda düzenleyin.
Kod:
Private Sub CommandButton2_Click()
[COLOR="Red"]Label26[/COLOR].Caption = Sheets("MALİ TABLO").Cells(19, "F")
End Sub
 
Sayın @vardar07 ve omer hocam yardımlarınız için çok teşekkür ederim, sayenizde projemi tamamladım.
 
Geri
Üst