• DİKKAT

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

Ambiguous Hatası

Katılım
1 Ocak 2008
Mesajlar
83
Excel Vers. ve Dili
yazarım sonra
Merhabalar,

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [S11]) Is Nothing Then Call GUNCELLE1
End Sub

kodunu kullanmaktayım. Fakat aşağıdakileri de kullanmam gerekiyor.Bunları nasıl derli toplu yazabilirim yoksa Ambiguous hatası verecek :(

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [S11]) Is Nothing Then Call GUNCELLE1
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [S15]) Is Nothing Then Call GUNCELLE2
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [S19]) Is Nothing Then Call GUNCELLE3
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [S23]) Is Nothing Then Call GUNCELLE4
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [S27]) Is Nothing Then Call GUNCELLE5
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [S31]) Is Nothing Then Call GUNCELLE6
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [S35]) Is Nothing Then Call GUNCELLE7
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [S39]) Is Nothing Then Call GUNCELLE8
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [S43]) Is Nothing Then Call GUNCELLE9
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [S47]) Is Nothing Then Call GUNCELLE10
End Sub
 
Hepsini tek bir change olayı içinde alt alta yazarak denedinizmi?
 
Merhaba,

İçimdeki bir ses bunun daha kısa olacağını söylüyor ama açıkçası ben bilmiyorum.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [S11:S47]) Is Nothing Then Exit Sub
If Target.Row Mod 4 <> 3 Then Exit Sub
If Target.Row = 11 Then Call Guncelle1
If Target.Row = 15 Then Call Guncelle2
If Target.Row = 19 Then Call Guncelle3
If Target.Row = 23 Then Call Guncelle4
If Target.Row = 27 Then Call Guncelle5
If Target.Row = 31 Then Call Guncelle6
If Target.Row = 35 Then Call Guncelle7
If Target.Row = 39 Then Call Guncelle8
If Target.Row = 43 Then Call Guncelle9
If Target.Row = 47 Then Call Guncelle10
End Sub
 
Selamlar,

Alternatif olarak aşağıdaki koduda kullanabilirsiniz. Çok fazla kısalmadı ama alternatif oması açısından sunmak istedim.

Kod:
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Satır As Variant, Makro As Variant, X As Byte

    If Intersect(Target, [S11:S47]) Is Nothing Then Exit Sub
    If Target.Row Mod 4 <> 3 Then Exit Sub

    Satır = Array(11, 15, 19, 23, 27, 31, 35, 39, 43, 47)
    Makro = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    
    For X = 0 To UBound(Satır)
    If Target.Row = Satır(X) Then
    Application.Run "GUNCELLE" & Makro(X)
    Exit For
    End If
    Next
End Sub
 
Selamlar,

Alternatif olarak aşağıdaki koduda kullanabilirsiniz. Çok fazla kısalmadı ama alternatif oması açısından sunmak istedim.

Kod:
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Satır As Variant, Makro As Variant, X As Byte
 
    If Intersect(Target, [S11:S47]) Is Nothing Then Exit Sub
    If Target.Row Mod 4 <> 3 Then Exit Sub
 
    Satır = Array(11, 15, 19, 23, 27, 31, 35, 39, 43, 47)
    Makro = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
 
    For X = 0 To UBound(Satır)
    If Target.Row = Satır(X) Then
    Application.Run "GUNCELLE" & Makro(X)
    Exit For
    End If
    Next
End Sub

Benimde aklımdan geçen böyle birşeydi Korhan bey. Olasılık 10 değil de 100 tane olsaydı kodlar ciddi anlamda kısalmış olacaktı. Önemli olan döngülü çözüm olması.
 
Sayın Necdet Yeşertener ve Korhan Ayhan

Yardımlarınız için çok teşekkür ederim.
 
Geri
Üst