• DİKKAT

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

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
 
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]
 
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
 
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
 
ş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]
 
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]
 
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.
 
Sayın Nadir,

2.verdiğim örnek gibi mi istiyorsunuz? Yani bu alanlara veri girince Takip_kaydet2 makrosunu çalışmak gibi...
 
Şö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.
 
Ş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]
 
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.
 
Geri
Üst