if or then veya if and then döngüsü kullanımı

Katılım
4 Temmuz 2011
Mesajlar
17
Excel Vers. ve Dili
Excel 2003 ve 2007
Altın Üyelik Bitiş Tarihi
31-08-2023
Arkadaşlar yaptığım proğramda şöyle bir manksal döngü kurmam gerekiyor bu konuda yardımlarınızı rica ediyorum.
Textbox1 Ünvan Bilgisi içeriyor Textbox2 gün sayısı içeriyor Textbox3 Tazminat puanı bilgisi içeriyor.Şöyle bir Mantık kullanacağız.
Eğer textbox1 in içeriği Mühendis ise Textbox2 nin içeriğini 3 ile çarp Textbox3 ün içine yaz veya Textbox1 in içeriği Tekniker ise Textbox2 nin içeriğini 2 ile çarp textbox3 ün i içine yaz veya Textbox1 in içeriği Teknisyen ise Textbox2 nin içeriğini 1,2 ile çarp textbox3 ün içeriğine yaz. diyeceğiz VBA da bunu nasıl kodlama yapacağız
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
if değil select case kullanın.
 
Katılım
4 Temmuz 2011
Mesajlar
17
Excel Vers. ve Dili
Excel 2003 ve 2007
Altın Üyelik Bitiş Tarihi
31-08-2023
Rica etsem. Benim yazdığım mantıksal ifadeye göre bir örnek yazabilirmisiniz
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Kod:
Select Case Textbox1.Value
            Case Is = "Mühendis"
            Textbox3.value = Textbox2.value * 3
            Case Is = "Tekniker"
            Textbox3.value = Textbox2.value * 2
            Case Is = "Teknisyen"
            Textbox3.value = Textbox2.value * 1.2       
End select
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Kod:
    Select Case TextBox1.Text
        Case "Mühendis": katsayi = 3
        Case "Tekniker": katsayi = 2
        Case "Teknisyen": katsayi = 1.2
    End Select
    TextBox3.Text = TextBox2.Text * katsayi
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Kod:
txt = Textbox1.Text
katsayi = Switch(txt = "Mühendis", 3, txt = "Tekniker", 2, txt = "Teknisyen", 1.2)
TextBox3.Text = TextBox2.Text * katsayi
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Kod:
    txt = "Mühendis"
    If txt = "Mühendis" Then
        katsayi = 3
    ElseIf txt = "Tekniker" Then
        katsayi = 2
    ElseIf txt = "Teknisyen" Then
        katsayi = 1.2
        Else
        katsayi = 0
    End If
    MsgBox katsayi
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Kod:
 txt = "Mühendis"
    katsayi = IIf(txt = "Mühendis", 3, IIf(txt = "Tekniker", 2, IIf(txt = "Teknisyen", 1.2, 0)))
    MsgBox katsayi
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Sanıyorum 3 ayda bir ödenen ek özel hizmet tazminatı yani arazi tazminatı için kullanacaksınız. isteğinize göre aşağıdaki gibi bir kod yapısı işinizi görecektir. Ancak yerinizde olsam bu iş için textbox kullanmazdım. Çünkü textboxa her zaman tam doğru bir şekilde veri yazılamayabilir:

PHP:
Private Sub TextBox1_Change()
If IsNumeric(TextBox2) Then
    If TextBox1 = "Mühendis" Then
        TextBox3 = WorksheetFunction.Min(60, TextBox2 * 3)
    ElseIf TextBox1 = "Tekniker" Then
        TextBox3 = WorksheetFunction.Min(40, TextBox2 * 2)
    ElseIf TextBox1 = "Teknisyen" Then
        TextBox3 = WorksheetFunction.Min(24, TextBox2 * 1.2)
    Else
        TextBox3 = ""
    End If
Else
    TextBox3 = ""
End If
End Sub

Private Sub TextBox2_Change()
If IsNumeric(TextBox2) Then
    If TextBox1 = "Mühendis" Then
        TextBox3 = WorksheetFunction.Min(60, TextBox2 * 3)
    ElseIf TextBox1 = "Tekniker" Then
        TextBox3 = WorksheetFunction.Min(40, TextBox2 * 2)
    ElseIf TextBox1 = "Teknisyen" Then
        TextBox3 = WorksheetFunction.Min(24, TextBox2 * 1.2)
    Else
        TextBox3 = ""
    End If
Else
    TextBox3 = ""
End If
End Sub
Not: Arazi tazminatında Mühendis için 60, Tekniker için 40 ve Teknisyen için 24 puan üst sınır olduğundan kodda buna göre düzeltme yaptım.
 
Katılım
4 Temmuz 2011
Mesajlar
17
Excel Vers. ve Dili
Excel 2003 ve 2007
Altın Üyelik Bitiş Tarihi
31-08-2023
Çok teşekkür ederim arkadaşlar
 
Katılım
4 Temmuz 2011
Mesajlar
17
Excel Vers. ve Dili
Excel 2003 ve 2007
Altın Üyelik Bitiş Tarihi
31-08-2023
Sanıyorum 3 ayda bir ödenen ek özel hizmet tazminatı yani arazi tazminatı için kullanacaksınız. isteğinize göre aşağıdaki gibi bir kod yapısı işinizi görecektir. Ancak yerinizde olsam bu iş için textbox kullanmazdım. Çünkü textboxa her zaman tam doğru bir şekilde veri yazılamayabilir:

PHP:
Private Sub TextBox1_Change()
If IsNumeric(TextBox2) Then
    If TextBox1 = "Mühendis" Then
        TextBox3 = WorksheetFunction.Min(60, TextBox2 * 3)
    ElseIf TextBox1 = "Tekniker" Then
        TextBox3 = WorksheetFunction.Min(40, TextBox2 * 2)
    ElseIf TextBox1 = "Teknisyen" Then
        TextBox3 = WorksheetFunction.Min(24, TextBox2 * 1.2)
    Else
        TextBox3 = ""
    End If
Else
    TextBox3 = ""
End If
End Sub

Private Sub TextBox2_Change()
If IsNumeric(TextBox2) Then
    If TextBox1 = "Mühendis" Then
        TextBox3 = WorksheetFunction.Min(60, TextBox2 * 3)
    ElseIf TextBox1 = "Tekniker" Then
        TextBox3 = WorksheetFunction.Min(40, TextBox2 * 2)
    ElseIf TextBox1 = "Teknisyen" Then
        TextBox3 = WorksheetFunction.Min(24, TextBox2 * 1.2)
    Else
        TextBox3 = ""
    End If
Else
    TextBox3 = ""
End If
End Sub
Not: Arazi tazminatında Mühendis için 60, Tekniker için 40 ve Teknisyen için 24 puan üst sınır olduğundan kodda buna göre düzeltme yaptım.
Sanıyorum 3 ayda bir ödenen ek özel hizmet tazminatı yani arazi tazminatı için kullanacaksınız. isteğinize göre aşağıdaki gibi bir kod yapısı işinizi görecektir. Ancak yerinizde olsam bu iş için textbox kullanmazdım. Çünkü textboxa her zaman tam doğru bir şekilde veri yazılamayabilir:

PHP:
Private Sub TextBox1_Change()
If IsNumeric(TextBox2) Then
    If TextBox1 = "Mühendis" Then
        TextBox3 = WorksheetFunction.Min(60, TextBox2 * 3)
    ElseIf TextBox1 = "Tekniker" Then
        TextBox3 = WorksheetFunction.Min(40, TextBox2 * 2)
    ElseIf TextBox1 = "Teknisyen" Then
        TextBox3 = WorksheetFunction.Min(24, TextBox2 * 1.2)
    Else
        TextBox3 = ""
    End If
Else
    TextBox3 = ""
End If
End Sub

Private Sub TextBox2_Change()
If IsNumeric(TextBox2) Then
    If TextBox1 = "Mühendis" Then
        TextBox3 = WorksheetFunction.Min(60, TextBox2 * 3)
    ElseIf TextBox1 = "Tekniker" Then
        TextBox3 = WorksheetFunction.Min(40, TextBox2 * 2)
    ElseIf TextBox1 = "Teknisyen" Then
        TextBox3 = WorksheetFunction.Min(24, TextBox2 * 1.2)
    Else
        TextBox3 = ""
    End If
Else
    TextBox3 = ""
End If
End Sub
Not: Arazi tazminatında Mühendis için 60, Tekniker için 40 ve Teknisyen için 24 puan üst sınır olduğundan kodda buna göre düzeltme yaptım.
Arkadaşım teşekkür ederim. Ancak ben ünvan kısmını textbox1 yazmışım Combobox olacaktı. birde textbox1 içine yazdığımız değeri textbox tan çıkınca textbox3 ün içine otomatik olarak nasıl yazdıracağız.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Arkadaşım teşekkür ederim. Ancak ben ünvan kısmını textbox1 yazmışım Combobox olacaktı. birde textbox1 içine yazdığımız değeri textbox tan çıkınca textbox3 ün içine otomatik olarak nasıl yazdıracağız.
Textbox1 yerine Combobox1 (ya da adı neyse) yazabilirsiniz.

Textbox3'te textbox2 yani gün sayısı ile günlük oranın çarpımı yazılmıyor muydu? Textbox1'de ne var?

Örnek dosya paylaşırsanız iyi olur.
 
Katılım
4 Temmuz 2011
Mesajlar
17
Excel Vers. ve Dili
Excel 2003 ve 2007
Altın Üyelik Bitiş Tarihi
31-08-2023
Textbox1 yerine Combobox1 (ya da adı neyse) yazabilirsiniz.

Textbox3'te textbox2 yani gün sayısı ile günlük oranın çarpımı yazılmıyor muydu? Textbox1'de ne var?

Örnek dosya paylaşırsanız iyi olur.
Çok Teşekkür ederim Textbox2 ye girilen rakamın hesaplama sonucu textbox3 e hemen yazıyor.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Arkadaşım teşekkür ederim. Ancak ben ünvan kısmını textbox1 yazmışım Combobox olacaktı. birde textbox1 içine yazdığımız değeri textbox tan çıkınca textbox3 ün içine otomatik olarak nasıl yazdıracağız.
Çok Teşekkür ederim Textbox2 ye girilen rakamın hesaplama sonucu textbox3 e hemen yazıyor.
Kodun ilk halinde zaten ikinci alıntıdaki işlemi yapıyoruz ama siz ilk alıntıda farklı bir istekte bulunmuştunuz. Bir karışıklık mı var yoksa ben mi yanlış anlıyorum?
 
Katılım
4 Temmuz 2011
Mesajlar
17
Excel Vers. ve Dili
Excel 2003 ve 2007
Altın Üyelik Bitiş Tarihi
31-08-2023
Yok anlaşılmada bir sıkıntı yok. Ben zaten sizin yazdığınız kodu kullandım. Gayet güzel çalışıyor. Şimdi farklı şeyleri araştırıyorum. Ben uzun yıllar Delphi kullandım. On da baya iyiydim ama 10 yılı aşkın yazılımdan uzak kalınca köreldik. Şimd, Excel ve VBA ile iş yerinde lazım olan işler için program yapmaya çalışıyorum.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Sizi tebrik ederim, kendini geliştirmeye çalışmak ve bunun için çaba göstermek takdire şayan. Memur meslektaşlarımın ve özellikle de sizin gibi (tahminen) aynı bakanlık mensubu arkadaşlarımın bu gayretlerinden mutluluk duyuyorum.

Ben mesajımda ne yapmak istediğinizi anlamadığımı belirtmek istemiştim. Eğer textbox1'in textbox3'e aktarılması yeni bir konuysa muhtemelen textbox1'in Exit olayına yazılacak kodla çözülebilir:

PHP:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox3.Text = TextBox1.Text
End Sub
Gibi.
 
Katılım
4 Temmuz 2011
Mesajlar
17
Excel Vers. ve Dili
Excel 2003 ve 2007
Altın Üyelik Bitiş Tarihi
31-08-2023
Teşekkür ederim. Tahmininizde yanılmadınız Memur um ve Mutemetlik yapıyorum. Bu arada bir soru sorabilirmiyim. UserForm un çalıştığı her bilgisayarda tam ekran çalışması için properties penceresinde bir ayar bulamadım. Bilginiz varmı
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Bu konuda çeşitli çalışmalar var ve bu forumda da sanıyorum @Haluk üstadımızın bir çalışması var ama genel olarak çok verimli olmadığı, her ekran kartına ve her monitöre uydurmanın nesneler üzerinde olumsuz etkileri olduğu söyleniyor.

Şu konuyu bi inceleyin isterseniz:

 
Üst