combobox listesi hk

Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
Merhaba Arkadaşlar
Aşağodaki kod ile combobox'ta açılabilir listeyi yapıyorum.
Kod:
Private Sub UserForm_Initialize()
ComboBox1.RowSource = "KatagoriNo!a4:a" & [a250].End(xlDown).Row
End Sub
A4 ile A250 arasındaki liste içinde aynı numaralardan olusan katagori numaralarınıda içeriyor. Bu numaralar comboboxta listedeki sırası ile ve aynı olanlarda alt alta geliyor.
Benim istediğim; kod çalıştığı zaman A4&A250 arasındaki katagori küçükten büyüğe doğru sıralasın ve aynı katagori numaralarını bir kez göstersin.
 
Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
Merhaba Leventm

Ekteki dosyada;
Combobox'ta liste çıktığı zaman A sütununda bulunan cihaz isimlerini sıralanmış olarak ve her cihaz adından birer tane olacak şekilde comboboxta görmek istiyorum. Bunu istememin sebebi DATA sayfasına başkaları tarafından yeni cihaz isimleri girilecek. Combobox'tan seçtiğim cihazın diğer bilgilerini userform üzerinden kontrol edip değişik formatlarda rapor alacağım.

Bir isteğim daha olacak; Çıkan sonuçlar (Textbox1)'e yazdığım 12,36+15,41+3,58 sayılarını toplayıp Toplam (Textbox2)'ye yazmasını isyiyorum. Bunu yapabilirmiyiz.

Teşekkürler
 
Katılım
1 Haziran 2005
Mesajlar
3
Excel Vers. ve Dili
Excel 2003 İngilizce
Combobox hakında sorduğun soru üzerinde bende uğraştım kendimce bu çözümü buldum ama daha pratik cevabı olanlar yardımcı olurlarsa bende memnun olacağım.

Private Sub UserForm_Initialize()
'ComboBox1.RowSource = "DATA!A2:A" & [A65536].End(xlDown).Row
Dim rno, i, j As Integer
rno = WorksheetFunction.CountA(Range("a2:a65536")) - 1
For i = 2 To rno
Cells(i, 26) = Cells(i, 1)
Next i

Range("z2").Select
Range("z2:z" & rno).Sort Key1:=Range("z2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

For j = 2 To rno
If Cells(j, 26) <> Cells(j - 1, 26) Then
ComboBox1.AddItem Cells(j, 26)
End If
Next j
Range("z2:z" & rno).ClearContents
Cells(1, 1).Select
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Çözüm mantığınız doğru, aynı mantığı advanced filter özelliği ile yaparsak, bir döngü azaltmış oluruz.

[vb:1:74d036ef63]Private Sub UserForm_Initialize()
Columns(1).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[z1], Unique:=True
Range("z2:z65536").Sort Key1:=[z2]
ComboBox1.RowSource = "z2:z" & [z65536].End(3).Row
End Sub
[/vb:1:74d036ef63]
 
Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
Yardımlarınız için teşekkürler Sn. leventm ve canavar64
 
Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
algil' Alıntı:
Merhaba Leventm

Bir isteğim daha olacak; Çıkan sonuçlar (Textbox1)'e yazdığım 12,36+15,41+3,58 sayılarını toplayıp Toplam (Textbox2)'ye yazmasını isyiyorum. Bunu yapabilirmiyiz.

Teşekkürler
Bunun için bir çözüm üretebilirmiyiz?
 
Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
sorunun ikinci bölümü için Sn Haluk'un ve Sn. leventm'in kodlarından kullanarak bir çözüm ürettim.
Kod:
Private Sub TextBox1_Change()
Dim y, k
k = 0
For s = 1 To 10
    On Error GoTo 10
    Temp = Split(Trim(TextBox1), "+")
    y = IIf(1, Temp(s - 1), StrReverse(Temp(s - 1))) * 1
    k = k + y
Next s
10:
    TextBox2 = Replace(k, ".", ",")
End Sub

Private Sub UserForm_Initialize()
'ComboBox1.RowSource = "DATA!A2:A" & [A65536].End(xlDown).Row
Columns(1).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[z1], Unique:=True
Range("z2:z65536").Sort Key1:=[z2]
ComboBox1.RowSource = "z2:z" & [z65536].End(3).Row
End Sub
 
Üst