Eğer aynı ise...

Katılım
21 Kasım 2004
Mesajlar
87
Merhaba,

Range("C11:C20") arasındaki değerler ile diğer sayfadaki Range("D3") değeri aynı ise şu işlemi yap, aynı değilse başka işlem yap...gibi makroyu nsıl yazılır?

Aşağıdaki şekilde düşündüm, ama hata veriyor.

Sub ayni_ise()
If Sheets("KALEM").Range("C11:C20").Value = Sheets("GİRİŞ").Range("D3").Value Then
.............
Else
.............
End If
End Sub
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Sayın Nadir,

Aşağıdaki kadları deneyebilirmisiniz?

[vb:1:8c6912de9d]
Sub Kontrol()
Dim veri As Variant
Dim alan As Range
veri = Sheets(2).Range("D3").Value
For Each alan In Range("C11:C20")
If alan.Value = veri Then
MsgBox "OK"
Else
MsgBox "NOK"
End If
Next
End Sub
[/vb:1:8c6912de9d]
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Bu kodu bir deneyiniz.

Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(1).Value = Sheets("sayfa2").[a1].Value Then
MsgBox "oldu mu?"
Else
MsgBox "Olmadı mı?"
End If
End Sub
 
Katılım
21 Kasım 2004
Mesajlar
87
Arkadaşlar teşekkür ederim ama... kodlarınız sürekli çalışıyor, hiç durmuyor.

Ben aşağıdaki şekilde halletmeye çalıştım. Fakat kod uzun oldu haliyle. Kısaltılmış şekli nasıl yapılabilir?

Sub ayni_ise()
If Sheets("KALEM").Range("C11").Value = Sheets("GiRiŞ").Range("D3").Value Then
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select
ElseIf Sheets("KALEM").Range("C12").Value = Sheets("GiRiŞ").Range("D3").Value Then
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select
ElseIf Sheets("KALEM").Range("C13").Value = Sheets("GiRiŞ").Range("D3").Value Then
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select
ElseIf Sheets("KALEM").Range("C14").Value = Sheets("GiRiŞ").Range("D3").Value Then
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select
ElseIf Sheets("KALEM").Range("C15").Value = Sheets("GiRiŞ").Range("D3").Value Then
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select
ElseIf Sheets("KALEM").Range("C16").Value = Sheets("GiRiŞ").Range("D3").Value Then
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select
ElseIf Sheets("KALEM").Range("C17").Value = Sheets("GiRiŞ").Range("D3").Value Then
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select
ElseIf Sheets("KALEM").Range("C18").Value = Sheets("GiRiŞ").Range("D3").Value Then
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select
ElseIf Sheets("KALEM").Range("C19").Value = Sheets("GiRiŞ").Range("D3").Value Then
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select
ElseIf Sheets("KALEM").Range("C20").Value = Sheets("GiRiŞ").Range("D3").Value Then
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select

ElseIf Sheets("KALEM").Range("C2").Value = Sheets("GiRiŞ").Range("D3").Value Then
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select

ElseIf Sheets("KALEM").Range("C6").Value = Sheets("GiRiŞ").Range("D3").Value Then
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select

Else

Sheets("Takip").Select
Takip_kaydet
Sheets("Nakit").Select
End If

End Sub
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
şu işlemi yap, aynı değilse başka işlem yap...gibi makroyu nsıl yazılır?
dediğiniz için Else deyimini kullandık.

Siz sadece tek bir işlem yaptırmak istiyorsanız aşağıdakileri kullanabilirsiniz.

[vb:1:f54f2657c5]
Sub Kontrol()
Dim veri As Variant
Dim alan As Range
veri = Sheets(2).Range("D3").Value
For Each alan In Range("C11:C20")
If alan.Value = veri Then

Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select

End If
Next
End Sub

[/vb:1:f54f2657c5]
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Sayın Nadir

Eğer For Next döngüsü istemiyorsanız sadece kayıt girildiği an Takip_kaydet2 makrosunu çalıştırmak için;

[vb:1:09aafeaa76]
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim veri As Variant
veri = Sheets("GiRiŞ").Range("D3").Value
If Intersect(Target, [C11:C20]) Is Nothing Then Exit Sub
If Target.Value = veri Then
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select
End If
End Sub
[/vb:1:09aafeaa76]
 
Katılım
21 Kasım 2004
Mesajlar
87
Sayın ripek, ilginiz için teşekkürler.

Sizden ricam şudur ki;
Sayfa makrosu değilde, modülde çalışacak şekilde makroyu uyarlasak ve de sadece [C11:C20] hücre aralığı değilde, ayrı ayrı [C2] ve [C6] kapsayacak biçimde makroyu düzenleyebilirmiyiz? Veya başka bir kod da olabilir.
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Sayın Nadir,

2.verdiğim örnek gibi mi istiyorsunuz? Yani bu alanlara veri girince Takip_kaydet2 makrosunu çalışmak gibi...
 
Katılım
21 Kasım 2004
Mesajlar
87
Şöyle izah etmem gerekirse;

Veri girdiğim hücre sadece D3 hücresi, kontrol edilen yerler ise C11:C20 arası, C2 ve C6 hücreleridir. Yani D3 hücresine girdiğim veri, kontrol edilen hücrelerde var ise, "Takip_kaydet2" kodu, yok ise "Takip_kaydet1" kodu çalışacak.
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Şimdi anlaşıldı. :D

Siz yaptığımızın tersini istiyorsunuz.

Daha kısa kodlar vardır ama şu an için aklıma gelenler bunlar.

Siz kendinize göre uyarlarsınız.

[vb:1:f74ac57bdb]
Sub Kontrol3()
Dim veri As Variant
Dim alan As Range
veri = Sheets("GiRiŞ").Range("D3").Value
For Each alan In Sheets("KALEM").Range("C11:C20")
If alan.Value = veri Then
Call Koşul1
Else
Call Koşul2
End If
Next
'***************************************************
If [D3].Value = Sheets("KALEM").Range("C2").Value Then
Call Koşul1
Else
Call Koşul2
End If
'***************************************************
If [D3].Value = Sheets("KALEM").Range("C6").Value Then
Call Koşul1
Else
Call Koşul2
End Sub

Sub Koşul1()
Sheets("Takip2").Select
Takip_kaydet2
Sheets("Nakit").Select
End Sub

Sub Koşul2()
Sheets("Takip2").Select
Takip_kaydet1
Sheets("Nakit").Select
End Sub
[/vb:1:f74ac57bdb]
 
Katılım
21 Kasım 2004
Mesajlar
87
ripek' Alıntı:
Daha kısa kodlar vardır ama şu an için aklıma gelenler bunlar.

Siz kendinize göre uyarlarsınız.
Dediğiniz gibi bende daha kısa kodlar bekliyordum, ama sizin kodlarınız da benim bir üst mesajımda verdiğim kodlar kadar var. :lol:

Kodları kendime uyarladım. Yardımlarınız için çok teşekkürler.
 
Üst