Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > EXCEL-Soruları > Makro-VBA
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

Makro-VBA Makro veya VBA ile ilgili sorularınızı buraya gönderebilirsiniz.
Dosya ekleyebilirsiniz

Özel Arama


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 20-03-2017, 21:19   #1
ismailozkan4224
 
Giriş: 22/11/2011
Şehir: konya
Mesaj: 53
Excel Vers. ve Dili:
2007 türkçe
Varsayılan textboxlara en büyük sayıdan başlayarak en büyük 10 sayıyı aldırmak

değerli arkadaşlar aşağıdaki kodla combobox değişimi ile 10 adet textboxa F2:F200 arasındaki en büyük 10 sayıyı textboxa almak istiyorum. yardımlarınızı beklerim inşallah.

Private Sub ComboBox1_Change()
On Error Resume Next
ComboBox1.List = Application.Transpose(RANGE("f1:ce1"))
Set s1 = Sheets("1")

TextBox1.Value = WorksheetFunction.Max(RANGE("F2:F200"))
TextBox2.Value = WorksheetFunction.Max(RANGE("F2:F200;2"))
TextBox3.Value = WorksheetFunction.Max(RANGE("F2:F200;3"))
TextBox4.Value = WorksheetFunction.Max(RANGE("F2:F200;4"))
TextBox5.Value = WorksheetFunction.Max(RANGE("F2:F200;5"))
TextBox6.Value = WorksheetFunction.Max(RANGE("F2:F200;6"))
TextBox7.Value = WorksheetFunction.Max(RANGE("F2:F200;7"))
TextBox8.Value = WorksheetFunction.Max(RANGE("F2:F200;8"))
TextBox9.Value = WorksheetFunction.Max(RANGE("F2:F200;9"))
TextBox10.Value = WorksheetFunction.Max(RANGE("F2:F200;10"))
Exit Sub
End Sub
ismailozkan4224 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 20-03-2017, 21:39   #2
Ömer
Moderatör
 
Ömer kullanıcısının avatarı
 
Giriş: 18/08/2007
Şehir: Kuşadası
Mesaj: 18,534
Excel Vers. ve Dili:
Excel 2010 Türkçe
Varsayılan

Merhaba,

TextBox1.Value = WorksheetFunction.Large(Range("F2:F200"), 1)


TextBox1.Value = Application.Large(Range("F2:F200"), 1)

Yazım hataları yapmışsınız. Ayrıca mak formülü yerine büyük fonksiyonunu kullanmanız gerekir. Yukarıdaki 2 örnekten biri gibi yazıp kullanabilirsiniz.

Verileriniz sistematik ilerlediği için aşağıdaki gibi kodları kısaltabilirsiniz.
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Private Sub ComboBox1_Change()

    Dim S1 As Worksheet, i As Byte

    ComboBox1.List = Application.Transpose(Range("f1:ce1"))
    
    Set S1 = Sheets("1")
    
    For i = 1 To 10
        Controls("TextBox" & i) = Application.Large(Range("F2:F200"), i)
    Next i
    
End Sub
.
__________________
.
Ömer Çevrimdışı   Alıntı Yaparak Cevapla
Eski 21-03-2017, 20:50   #3
ismailozkan4224
 
Giriş: 22/11/2011
Şehir: konya
Mesaj: 53
Excel Vers. ve Dili:
2007 türkçe
Varsayılan

hayırlı akşamlar ömer bey çok teşekkür ederim yardımlarınız için.
kodu aşağıdaki gibi düzenledim. gayet güzel çalışıyor.ancak formda bu mevcut 8 adet textboxun karşısında bir 8 textbox daha var yani 9-16 numaralı textboxlar.
9 nolu textbox 1 nolu textboxın değer aldığı satırın E sütunu ve aynı satırından değer alacak. tabiki diğer 9-16 arası textboxlar da aynı şekilde. yardım edebilir misiniz?

Private Sub ComboBox1_Change()

Dim S1 As Worksheet, i As Byte

ComboBox1.List = Application.Transpose(RANGE("f1:ce1"))

Set S1 = Sheets("1")

For i = 1 To 8
Controls("TextBox" & i) = Application.Large(RANGE("F2:F200"), i)
Next i
TextBox1.Value = WorksheetFunction.Large(RANGE("F2:F200"), 1) 'F SÜTUNU 12. SATIR
TextBox2.Value = WorksheetFunction.Large(RANGE("F2:F200"), 2) 'F SÜTUNU 11. SATIR
TextBox3.Value = WorksheetFunction.Large(RANGE("F2:F200"), 3) 'F SÜTUNU 10. SATIR
TextBox4.Value = WorksheetFunction.Large(RANGE("F2:F200"), 4) 'F SÜTUNU 9. SATIR
TextBox5.Value = WorksheetFunction.Large(RANGE("F2:F200"), 5) 'F SÜTUNU 8. SATIR
TextBox6.Value = WorksheetFunction.Large(RANGE("F2:F200"), 6) 'F SÜTUNU 7. SATIR
TextBox7.Value = WorksheetFunction.Large(RANGE("F2:F200"), 7) 'F SÜTUNU 6. SATIR
TextBox8.Value = WorksheetFunction.Large(RANGE("F2:F200"), 8) 'F SÜTUNU 5. SATIR


End Sub
ismailozkan4224 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 21-03-2017, 21:16   #4
Ömer
Moderatör
 
Ömer kullanıcısının avatarı
 
Giriş: 18/08/2007
Şehir: Kuşadası
Mesaj: 18,534
Excel Vers. ve Dili:
Excel 2010 Türkçe
Varsayılan

Veri alırken kod tekrarı yapmışsınız. Döngü yeterliydi.

Eski kodların yerine aşağıdakileri deneyin. Hem birinci hemde ikinci istediğinizi yapacaktır.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Private Sub ComboBox1_Change()

    Dim S1 As Worksheet, i As Byte, a As Double, b As Integer
    
    Set S1 = Sheets("1")
    
    ComboBox1.List = Application.Transpose(Range("F1:CE1"))
    
    For i = 1 To 8
    
        a = Application.Large(Range("F2:F200"), i)
        Controls("TextBox" & i) = a
        
        b = WorksheetFunction.Match(a, Range("F2:F200"), 0) + 1
        Controls("TextBox" & i + 8) = Cells(b, "E")
        
    Next i

End Sub
.
__________________
.
Ömer Çevrimdışı   Alıntı Yaparak Cevapla
Eski 22-03-2017, 16:05   #5
ismailozkan4224
 
Giriş: 22/11/2011
Şehir: konya
Mesaj: 53
Excel Vers. ve Dili:
2007 türkçe
Varsayılan

selamün aleyküm ömer bey
önce özür diliyorum. bilgiyi ben eksik verdim.
textbox 11-20 veri alışını hallettim gibi.
ama combobox f1-ce1 arasından verileri (sütun başlıklarını) alıyor.
textbox 1-10 f2-f200 arasındaki verileri getiriyor. sonra comboboxtan g1 sütunundaki veri seçilince aynı işlemi texbox 1-10 arası g2-g200 arasından verileri alması lazım.ama malesef beceremedim döngüyü...


Private Sub ComboBox1_Change()

Dim S1 As Worksheet, i As Byte

ComboBox1.List = Application.Transpose(RANGE("f1:ce1"))

Set S1 = Sheets("1")

For i = 1 To 10
Controls("TextBox" & i) = Application.Large(RANGE("F2:F200"), i)
Next i
TextBox1.Value = WorksheetFunction.Large(RANGE("F2:F200"), 1) & " - " & Cells(i, 3) 'F SÜTUNU 12. SATIR
TextBox2.Value = WorksheetFunction.Large(RANGE("F2:F200"), 2) 'F SÜTUNU 11. SATIR
TextBox3.Value = WorksheetFunction.Large(RANGE("F2:F200"), 3) 'F SÜTUNU 10. SATIR
TextBox4.Value = WorksheetFunction.Large(RANGE("F2:F200"), 4) 'F SÜTUNU 9. SATIR
TextBox5.Value = WorksheetFunction.Large(RANGE("F2:F200"), 5) 'F SÜTUNU 8. SATIR
TextBox6.Value = WorksheetFunction.Large(RANGE("F2:F200"), 6) 'F SÜTUNU 7. SATIR
TextBox7.Value = WorksheetFunction.Large(RANGE("F2:F200"), 7) 'F SÜTUNU 6. SATIR
TextBox8.Value = WorksheetFunction.Large(RANGE("F2:F200"), 8) 'F SÜTUNU 5. SATIR
TextBox9.Value = WorksheetFunction.Large(RANGE("F2:F200"), 9)
TextBox10.Value = WorksheetFunction.Large(RANGE("F2:F200"), 10)

TextBox11.Value = Cells(i + 1, 5)
TextBox12.Value = Cells(i, 5)
TextBox13.Value = Cells(i - 1, 5)
TextBox14.Value = Cells(i - 2, 5)
TextBox15.Value = Cells(i - 3, 5)
TextBox16.Value = Cells(i - 4, 5)
TextBox17.Value = Cells(i - 5, 5)
TextBox18.Value = Cells(i - 6, 5)
TextBox19.Value = Cells(i - 7, 5)
TextBox20.Value = Cells(i - 8, 5)

End Sub
ismailozkan4224 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 22-03-2017, 16:22   #6
ismailozkan4224
 
Giriş: 22/11/2011
Şehir: konya
Mesaj: 53
Excel Vers. ve Dili:
2007 türkçe
Varsayılan

aşağıdaki kodu denedim ama olmadı.
Private Sub ComboBox1_Change()

Dim S1 As Worksheet, i As Byte

ComboBox1.List = Application.Transpose(RANGE("f1:ce1"))

Set S1 = Sheets("1")

For k = 6 To 76 'F1 SÜTUNU - CE1 SÜTUNU ARASI İÇİN
For i = 1 To 10
Controls("TextBox" & i) = Application.Large(RANGE("k & 2:k & 200"), i)
Next i
TextBox1.Value = WorksheetFunction.Large(RANGE("k & 2:k & 200"), 1) & " - " & Cells(i, 3) 'F SÜTUNU 12. SATIR
TextBox2.Value = WorksheetFunction.Large(RANGE("k & 2:k & 200"), 2) 'F SÜTUNU 11. SATIR
TextBox3.Value = WorksheetFunction.Large(RANGE("k & 2:k & 200"), 3) 'F SÜTUNU 10. SATIR
TextBox4.Value = WorksheetFunction.Large(RANGE("k & 2:k & 200"), 4) 'F SÜTUNU 9. SATIR
TextBox5.Value = WorksheetFunction.Large(RANGE("k & 2:k & 200"), 5) 'F SÜTUNU 8. SATIR
TextBox6.Value = WorksheetFunction.Large(RANGE("k & 2:k & 200"), 6) 'F SÜTUNU 7. SATIR
TextBox7.Value = WorksheetFunction.Large(RANGE("k & 2:k & 200"), 7) 'F SÜTUNU 6. SATIR
TextBox8.Value = WorksheetFunction.Large(RANGE("k & 2:k & 200"), 8) 'F SÜTUNU 5. SATIR
TextBox9.Value = WorksheetFunction.Large(RANGE("k & 2:k & 200"), 9) 'F SÜTUNU 4. SATIR
TextBox10.Value = WorksheetFunction.Large(RANGE("k & 2:k & 200"), 10) 'F SÜTUNU 3. SATIR

TextBox11.Value = Cells(i + 1, 5)
TextBox12.Value = Cells(i, 5)
TextBox13.Value = Cells(i - 1, 5)
TextBox14.Value = Cells(i - 2, 5)
TextBox15.Value = Cells(i - 3, 5)
TextBox16.Value = Cells(i - 4, 5)
TextBox17.Value = Cells(i - 5, 5)
TextBox18.Value = Cells(i - 6, 5)
TextBox19.Value = Cells(i - 7, 5)
TextBox20.Value = Cells(i - 8, 5)
End Sub
ismailozkan4224 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 22-03-2017, 17:34   #7
ismailozkan4224
 
Giriş: 22/11/2011
Şehir: konya
Mesaj: 53
Excel Vers. ve Dili:
2007 türkçe
Varsayılan

sizin kodun uyarlanmış halidir. ama dediğim gibi sütun değişince değerlerin güncellenmesi gerekiyor. ancak yapamadım. sütunlarımız f1-ce1 arası yani 76 adet sütun var.

Private Sub ComboBox1_Change()

Dim S1 As Worksheet, i As Byte, a As Double, b As Integer

Set S1 = Sheets("1")

ComboBox1.List = Application.Transpose(RANGE("F1:CE1"))

For i = 1 To 10

a = Application.Large(RANGE("F2:F200"), i)
Controls("TextBox" & i) = a

b = WorksheetFunction.Match(a, RANGE("F2:F200"), 0) + 1
Controls("TextBox" & i + 10) = Cells(b, "E")

Next i

TextBox11.Value = Cells(i + 1, 5)
TextBox12.Value = Cells(i, 5)
TextBox13.Value = Cells(i - 1, 5)
TextBox14.Value = Cells(i - 2, 5)
TextBox15.Value = Cells(i - 3, 5)
TextBox16.Value = Cells(i - 4, 5)
TextBox17.Value = Cells(i - 5, 5)
TextBox18.Value = Cells(i - 6, 5)
TextBox19.Value = Cells(i - 7, 5)
TextBox20.Value = Cells(i - 8, 5)
End Sub
ismailozkan4224 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 22-03-2017, 20:44   #8
Ömer
Moderatör
 
Ömer kullanıcısının avatarı
 
Giriş: 18/08/2007
Şehir: Kuşadası
Mesaj: 18,534
Excel Vers. ve Dili:
Excel 2010 Türkçe
Varsayılan

Sorularınızı örnek dosya ile destekleyip detaylı açıklamanızı rica ederim, bu şekilde daha kısa ve net cevaplar alırsınız.

Öncelikle combobox1'e veri alırken kullandığınız kodları change altına değil Initialize altına yazmanızda fayda var. Aşağıdaki örnekte kırmızı satırı eski kod satırından silin ve aşağıdaki kod bloğunu userforma ekleyin.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Private Sub UserForm_Initialize()
    ComboBox1.List = Application.Transpose(Range("F1:CE1"))
End Sub
Diğer isteğiniz olan seçilen sütuna göre işlem yapmayla ilgili bir örnek ekliyorum. Örnek üzerinden diğer mesajlardaki örnek kodlarda aynı mantıkla ilerleyebilirsiniz.

s değişleniyle sütun indisini bulduktan sonra RANGE("F2:F200") yerlerine Range(Cells(2, s), Cells(200, s)) yazmanız yeterli olur. Aşağıdaki örnek gibi.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Private Sub ComboBox1_Change()

 Dim S1 As Worksheet, i As Byte, a As Double, b As Integer, s As Integer
    
 Set S1 = Sheets("1")

 s = ComboBox1.ListIndex + 6 'seçilen değerin hangi sütunda olduğunu bulur
    
 TextBox1.Value = WorksheetFunction.Large(Range(Cells(2, s), Cells(200, s)), 1)

End Sub
.
__________________
.
Ömer Çevrimdışı   Alıntı Yaparak Cevapla
Eski 23-03-2017, 21:15   #9
ismailozkan4224
 
Giriş: 22/11/2011
Şehir: konya
Mesaj: 53
Excel Vers. ve Dili:
2007 türkçe
Varsayılan okul ligi dosyası

selamün aleyküm ömer bey dosyayı ekledim yardım edebilirseniz sevinirim. şimdiden teşekkürler.
dosyayı ekleyemedim ama linkini atıyorum. uğraşım okul öğrencileri içindir.

http://s6.dosya.tc/server8/lyir9d/Okul-Ligi.rar.html

Verilerim 1-2-3 ve 4 . sayfalardadır. Sistem bütün sayfalarda aynı olup aynı şekilde çalışacaktır.
Her sayfa içindeki veriler 2-501 arasındadır.
Bu 4 sayfanın sütun başlıkları (F1:CE1) arasındadır. Combobox1 verileri buradan almaktadır.
Combobox1 ile bir veri seçildiğinde
Textbox1-5 arası sabah grubunu temsil etmektedir.
Textbox1=(2-51) arasındaki en büyük sayıyı
Textbox2=(52-101) arasındaki en büyük sayıyı
Textbox3=(102-151) arasındaki en büyük sayıyı
Textbox4=(152-201) arasındaki en büyük sayıyı
Textbox5=(202-251) arasındaki en büyük sayıyı ifade edecektir.
Textbox1-5 arasında en büyük olan sayı kırmızı olacaktır. (1. Lik için)

Textbox6-10 arası öğlen grubunu temsil etmektedir.
Textbox6=(252-301) arasındaki en büyük sayıyı
Textbox7=(302-351) arasındaki en büyük sayıyı
Textbox8=(352-401) arasındaki en büyük sayıyı
Textbox9=(402-451) arasındaki en büyük sayıyı
Textbox10=(452-501) arasındaki en büyük sayıyı ifade edecektir.
Textbox6-10 arasında en büyük olan sayı kırmızı olacaktır. (1. Lik için)

Text1-5 hangi satırdan veri alıyorsa
textbox11-15 aynı satırın “E” sütunundan veri alacak.
Textbox21-25 aynı satırın “C” sütunundan veri alacak.
Textbox31-35 aynı satırın “B” sütunundan veri alacak.

Text6-10 hangi satırdan veri alıyorsa
textbox16-20 aynı satırın “E” sütunundan veri alacak.
Textbox26-30 aynı satırın “C” sütunundan veri alacak.
Textbox36-40 aynı satırın “B” sütunundan veri alacak.

Temizlikformu tıklandığında
Temizlik formu açılacak. Öğrenci formu butonu tıklandığında o form açılıp temizlik formu kapanacak. Öğrenci formundan temizlik formuna geçebildim ama diğerini yapamadım.

Bu mesaj en son " 24-03-2017 " tarihinde saat 08:44 itibariyle ismailozkan4224 tarafından düzenlenmiştir....
ismailozkan4224 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 23-03-2017, 21:21   #10
ismailozkan4224
 
Giriş: 22/11/2011
Şehir: konya
Mesaj: 53
Excel Vers. ve Dili:
2007 türkçe
Varsayılan

user form initialize ve combobox1 kodlarım aşağıdadır.

Private Sub UserForm_Initialize()
ComboBox1.List = Application.Transpose(RANGE("F1:CE1"))
Do
'CommandButton5
Label1.Caption = "TARİH :" & Format(Now, "dd.mm.yyyy") & vbLf & "SAAT :" & Format(Now, "hh:mm:ss") & vbLf
Label2.Caption = " İSMAİL ÖZKAN " & vbLf & " SIRAÇ AYDINTAŞBAŞ İLKOKULU "
Label3.Caption = " SIRAÇ'TA BAHAR "
DoEvents
Loop
End Sub

Private Sub ComboBox1_Change()
Dim S1 As Worksheet, i As Byte, a As Double, b As Integer, s As Integer
Set S1 = Sheets("1")
s = ComboBox1.ListIndex + 6 'seçilen değerin hangi sütunda olduğunu bulur
TextBox1.Value = WorksheetFunction.Large(RANGE(Cells(2, s), Cells(200, s)), 1)
TextBox2.Value = WorksheetFunction.Large(RANGE(Cells(2, s), Cells(200, s)), 2)
TextBox3.Value = WorksheetFunction.Large(RANGE(Cells(2, s), Cells(200, s)), 3)
TextBox4.Value = WorksheetFunction.Large(RANGE(Cells(2, s), Cells(200, s)), 4)
TextBox5.Value = WorksheetFunction.Large(RANGE(Cells(2, s), Cells(200, s)), 5)

t = ComboBox1.ListIndex + 6 'seçilen değerin hangi sütunda olduğunu bulur
TextBox6.Value = WorksheetFunction.Large(RANGE(Cells(201, t), Cells(400, t)), 1)
TextBox7.Value = WorksheetFunction.Large(RANGE(Cells(201, t), Cells(400, t)), 2)
TextBox8.Value = WorksheetFunction.Large(RANGE(Cells(201, t), Cells(400, t)), 3)
TextBox9.Value = WorksheetFunction.Large(RANGE(Cells(201, t), Cells(400, t)), 4)
TextBox10.Value = WorksheetFunction.Large(RANGE(Cells(201, t), Cells(400, t)), 5)

Set S2 = Sheets("PUANLAR")
TextBox41.Value = S2.Cells(3, 2).Value
TextBox42.Value = S2.Cells(3, 3).Value
TextBox43.Value = S2.Cells(3, 4).Value
TextBox44.Value = S2.Cells(3, 5).Value
TextBox45.Value = S2.Cells(3, 6).Value

End Sub
ismailozkan4224 Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 05:32


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Hurda - Torna - Çorlu Web Tasarım - Tarot Falı - Fenerbahçe Haberleri - Trakya Haberleri - Investing - Hurda - Tekirdağ Samsung - Kozmetik Ürünler - Sağlıklı Makyaj Ürünleri - Yaşlanma Karşıtı Ürünler - Excel Eğitimi - Çorlu osgb - Lingerie - Dyeing Machine - Çorlu Temizlik- Çorlu Ambar- Hava Çekimi- Hazır Site- SEO- Çorlu Burun Estetiği- Çorlu Pimapen- Karton Bardak- Marka Tescil Danışmanlık- Marmara Ereğlisi Restaurant- Çorlu Baskı- Çorlu Sigorta- Çorlu Pimapenci- İstanbul Avukat-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden