Soru Ambiguous name detected + Resmi Hücreye Sığdırma

Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Merhabalar
Herkese Kolay gelsin
Problemim şu şekilde.
1- A formülünde resim boyutlandırma kısmında resim hücreye tam sığmasını istiyorum. Lakin hücreden taşıyor. Sığması için tekrar bütün resimleri elle düzenlemem gerekiyor. Resim boyutu kısmında height + - veya top + - denedim maalesef olmadı. Yardımcı olabilecek var mıdır ?
Not : Formülün tamamını koydum klasörden değişkene göre resim çağırmak isteyen arkadaşlar kullanabilir. ( Resim yolu varsayımdır, Örnekteki resim temsilidir)

2- A ve B formüllerini aynı sayfada kullandığımda " Ambiguous name detected " hatası alıyorum. Hatanın anlamını veya sebebini bilmediğimden çözemedim. Evet internette araştırdım ama tam anlamıyla çözüm bulamadım. Bir Kaç yerde formüller çakışıyor denmiş ama benim 2 formül arasında ortak bir nokta yok. Bu sorunu nasıl aşabilirim. ?
Not : Modül kısmında tüm sayfalarda kullanılan ayrı bir formül var. Onunla alakalı mıdır acaba diyerek ben baktım ama bişey bulamadım.


EXCEL Örneği Linki : https://s2.dosya.tc/server12/p1garl/Hata_-_Makro.xlsm.html ( Normalde çok karışık bir sayfa olduğu için elimden geldiğince sadeleştirmeye çalıştım)

FORMÜL : A

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo CIKIS

If Intersect(Target, [B23:B80]) Is Nothing Then Exit Sub


Satir = Target.Row
a = RESIM_SIL(Satir)

If Range("B" & Satir).Value = "" Then Exit Sub
a = RESIM_EKLE(Satir)


Exit Sub

CIKIS:
    MsgBox Err.Description
End Sub





Public Function RESIM_EKLE(pSatir)
On Error GoTo Hata

Dim ResimYolu, dosyaVarmi As Variant
Dim Resim As Object

ResimYolu = "C:\RESİMLER\" & Range("B" & pSatir).Value & ".jpg"
dosyaVarmi = Dir(ResimYolu)

If dosyaVarmi = "" Then
    ResimYolu = "C:\RESİMLER\bos.jpg"
End If


Set Resim = ActiveSheet.Pictures.Insert(ResimYolu)
    
    ' Resim boyutlama
    
    Range("U" & pSatir).Value = Resim.Name
    With Range("F" & pSatir)
    Resim.Left = .Left
    Resim.Top = .Top
    Resim.Height = .Height
    Resim.Width = .Width
    
        
    End With

Exit Function

Hata:
    MsgBox "Hata Oluştu" & vbNewLine & Err.Description
End Function






Public Function RESIM_SIL(pSatir)
On Error GoTo Hata

    ActiveSheet.Shapes.Range(Array(Range("U" & pSatir).Value)).Select
    Selection.Delete

Hata:
    Range("U" & pSatir).Value = ""
End Function
FORMUL B:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [P2]) Is Nothing Then Exit Sub
Range("P3").Value = ""
Range("P3").Value = Now
Range("P3").NumberFormat = "dd.mm.yyyy"
End Sub
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Yardımcı olabilecek var mıdır ?
 

Trilenium

Destek Ekibi
Destek Ekibi
Katılım
16 Eylül 2008
Mesajlar
1,056
Excel Vers. ve Dili
Microsoft Office 2019 English
Ambiguous name detected = Kodlarında aynı isimle bir SUB var veya function arasında aynı isim var.

Check edip tekrar deneyeiblir misin, dosyanı indiremiyorum güvenliğimize takıldı
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Ambiguous name detected = Kodlarında aynı isimle bir SUB var veya function arasında aynı isim var.

Check edip tekrar deneyeiblir misin, dosyanı indiremiyorum güvenliğimize takıldı
Doğru mu anladım ; yukarıdaki iki formülünde " Private Sub Worksheet_Change " ile başlamasından dolayı hata ?
 

Trilenium

Destek Ekibi
Destek Ekibi
Katılım
16 Eylül 2008
Mesajlar
1,056
Excel Vers. ve Dili
Microsoft Office 2019 English
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo CIKIS

If Intersect(Target, [B23:B80]) Is Nothing Then Exit Sub


Satir = Target.Row
a = RESIM_SIL(Satir)

If Range("B" & Satir).Value = "" Then Exit Sub
a = RESIM_EKLE(Satir)


Exit Sub

CIKIS:
MsgBox Err.Description
End Sub

----------------------------- yukarıdaki kodda sub worksheet aşağıdaki de. sistem diyor ki ; Pardon ama ben hangisini yapayım .

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [P2]) Is Nothing Then Exit Sub
Range("P3").Value = ""
Range("P3").Value = Now
Range("P3").NumberFormat = "dd.mm.yyyy"
End Sub
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo CIKIS

If Intersect(Target, [B23:B80]) Is Nothing Then Exit Sub


Satir = Target.Row
a = RESIM_SIL(Satir)

If Range("B" & Satir).Value = "" Then Exit Sub
a = RESIM_EKLE(Satir)


Exit Sub

CIKIS:
MsgBox Err.Description
End Sub

----------------------------- yukarıdaki kodda sub worksheet aşağıdaki de. sistem diyor ki ; Pardon ama ben hangisini yapayım .

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [P2]) Is Nothing Then Exit Sub
Range("P3").Value = ""
Range("P3").Value = Now
Range("P3").NumberFormat = "dd.mm.yyyy"
End Sub
Yani bunları nasıl birleştirecez o vakit ?
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Günaydınlar
Yokmu bu 2 formül nasıl birleşir söyleyebilecek olan ?
 

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,520
Excel Vers. ve Dili
Office 365 Türkçe
Şu şekilde deneyiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo CIKIS
    If Not Intersect(Target, [B23:B80]) Is Nothing Then
        Satir = Target.Row
        a = RESIM_SIL(Satir)
        If Range("B" & Satir).Value = "" Then Exit Sub
        a = RESIM_EKLE(Satir)
        Exit Sub
CIKIS:
        MsgBox Err.Description
    ElseIf Not Intersect(Target, [P2]) Is Nothing Then
        Range("P3").Value = Now
        Range("P3").NumberFormat = "dd.mm.yyyy"
    End If
End Sub
Public Function RESIM_EKLE(pSatir)
On Error GoTo Hata

Dim ResimYolu, dosyaVarmi As Variant
Dim Resim As Object

ResimYolu = "C:\RESİMLER\" & Range("B" & pSatir).Value & ".jpg"
dosyaVarmi = Dir(ResimYolu)

If dosyaVarmi = "" Then
    ResimYolu = "C:\RESİMLER\bos.jpg"
End If
Set Resim = ActiveSheet.Pictures.Insert(ResimYolu)
    ' Resim boyutlama
    
    Range("U" & pSatir).Value = Resim.Name
    With Range("F" & pSatir)
    Resim.Left = .Left
    Resim.Top = .Top
    Resim.Height = .Height
    Resim.Width = .Width
        
    End With

Exit Function

Hata:
    MsgBox "Hata Oluştu" & vbNewLine & Err.Description
End Function

Public Function RESIM_SIL(pSatir)
On Error GoTo Hata

    ActiveSheet.Shapes.Range(Array(Range("U" & pSatir).Value)).Select
    Selection.Delete

Hata:
    Range("U" & pSatir).Value = ""
End Function
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Şu şekilde deneyiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo CIKIS
    If Not Intersect(Target, [B23:B80]) Is Nothing Then
        Satir = Target.Row
        a = RESIM_SIL(Satir)
        If Range("B" & Satir).Value = "" Then Exit Sub
        a = RESIM_EKLE(Satir)
        Exit Sub
CIKIS:
        MsgBox Err.Description
    ElseIf Not Intersect(Target, [P2]) Is Nothing Then
        Range("P3").Value = Now
        Range("P3").NumberFormat = "dd.mm.yyyy"
    End If
End Sub
Public Function RESIM_EKLE(pSatir)
On Error GoTo Hata

Dim ResimYolu, dosyaVarmi As Variant
Dim Resim As Object

ResimYolu = "C:\RESİMLER\" & Range("B" & pSatir).Value & ".jpg"
dosyaVarmi = Dir(ResimYolu)

If dosyaVarmi = "" Then
    ResimYolu = "C:\RESİMLER\bos.jpg"
End If
Set Resim = ActiveSheet.Pictures.Insert(ResimYolu)
    ' Resim boyutlama
   
    Range("U" & pSatir).Value = Resim.Name
    With Range("F" & pSatir)
    Resim.Left = .Left
    Resim.Top = .Top
    Resim.Height = .Height
    Resim.Width = .Width
       
    End With

Exit Function

Hata:
    MsgBox "Hata Oluştu" & vbNewLine & Err.Description
End Function

Public Function RESIM_SIL(pSatir)
On Error GoTo Hata

    ActiveSheet.Shapes.Range(Array(Range("U" & pSatir).Value)).Select
    Selection.Delete

Hata:
    Range("U" & pSatir).Value = ""
End Function

Teşekkürler
Formülleri birleştirme sorunum çözüldü.
Tek resim boyutlama kaldı. Şu anda resimleri Left +1 right +2 ve Width -34 olarak kullanıyorum lakin buda resmi orantılı olarak küçültüyor ve hücreye yaymıyor. Hücrenin sağ tarafı belki yarısı boş kalıyor. Çözüm bulamazsam bu şekilde kalacak artık.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,132
Excel Vers. ve Dili
2007 Türkçe
Tek resim boyutlama kaldı. Şu anda resimleri Left +1 right +2 ve Width -34 olarak kullanıyorum lakin buda resmi orantılı olarak küçültüyor ve hücreye yaymıyor. Hücrenin sağ tarafı belki yarısı boş kalıyor. Çözüm bulamazsam bu şekilde kalacak artık.
Merhaba,
Boyutlandırma işlemini yapmadan önce en-boy oranının kilidini kaldırmanız gerekiyor.
Boyutlandırma kodlarından önce Resim.LockAspectRatio = msoFalse satırını ilave ediniz. Hata oluşursa Resim.ShapeRange.LockAspectRatio = msoFalse şeklinde deneyiniz.
İyi çalışmalar...
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Şu şekilde deneyiniz.
Kod:
        MsgBox Err.Description
    ElseIf Not Intersect(Target, [P2]) Is Nothing Then
        Range("P3").Value = Now
        Range("P3").NumberFormat = "dd.mm.yyyy"
Merhabalar tekrar. Çok basit olsa bile benim gibi bilmeyen için çok zor olan başka saydan hedefi nasıl gösterecez ?Yukarıda formulde P2 de yazan P3 e sabıt olarak gecıyor. Ama yapmış olduğum değişiklikten dolayı INFO!C11 den P3 bilgi alması ve sabitlemesi gerekiyor. P2 yerine INFO!C11 nasıl yazıcam diye nette baya araştırdın farklı farklı denedim beceremedim. Yardımcı olabilecek var mıdır ?
 

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,520
Excel Vers. ve Dili
Office 365 Türkçe
Merhabalar tekrar. Çok basit olsa bile benim gibi bilmeyen için çok zor olan başka saydan hedefi nasıl gösterecez ?Yukarıda formulde P2 de yazan P3 e sabıt olarak gecıyor. Ama yapmış olduğum değişiklikten dolayı INFO!C11 den P3 bilgi alması ve sabitlemesi gerekiyor. P2 yerine INFO!C11 nasıl yazıcam diye nette baya araştırdın farklı farklı denedim beceremedim. Yardımcı olabilecek var mıdır ?
Merhaba , P2 ' ye ne yazıyorsunuz da P3 ' o yazıyor söyleyebilir misiniz.
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Merhaba , P2 ' ye ne yazıyorsunuz da P3 ' o yazıyor söyleyebilir misiniz.
p2 de BUGÜN() var. bugunun tarihini p3 satırına sabitliyor. Yani p2 hücresine ellemediğim sürece tarih orada sabit kalıyor. İşte bu p3te sabit kalacak tarihi P2 den değilde aynı excel dosyasındaki "INFO" sayfasının C11 hücresinden almasını istiyorum.
 

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,520
Excel Vers. ve Dili
Office 365 Türkçe
O zaman şu satırı

Kod:
Range("P3").Value = Now
bu şekilde değiştirin.

Kod:
Range("P3").Value = Sheets("INFO").Range("C11")
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
O zaman şu satırı

Kod:
Range("P3").Value = Now
bu şekilde değiştirin.

Kod:
Range("P3").Value = Sheets("INFO").Range("C11")
Orjinalde kodlarım bu şekilde
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo CIKIS
    If Not Intersect(Target, [B23:B80]) Is Nothing Then
        Satir = Target.Row
        a = RESIM_SIL(Satir)
        If Range("B" & Satir).Value = "" Then Exit Sub
        a = RESIM_EKLE(Satir)
        Exit Sub
CIKIS:
        MsgBox Err.Description
    ElseIf Not Intersect(Target, [P3]) Is Nothing Then
        Range("P4").Value = Now
        Range("P4").NumberFormat = "mmyyddhhss"
    End If
End Sub
Sizin dediğiniz değişikliği yaptığımda bu şekilde oluyor.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo CIKIS
    If Not Intersect(Target, [B23:B80]) Is Nothing Then
        Satir = Target.Row
        a = RESIM_SIL(Satir)
        If Range("B" & Satir).Value = "" Then Exit Sub
        a = RESIM_EKLE(Satir)
        Exit Sub
CIKIS:


Bu değişiklik akabinde çalıştırdığımda
1- Excel kasıyor ve 9 10 sn hiç bir işlem yapmıyor sonra düzeliyor
2- P4 de bir değşiklik olmuyor
Ayrıca verdiğiniz kodda yanlış anlamadıysam P3 = INFOC11 demek istediniz değilmi ? ben şu şekilde denedim ama o da çalışmadı .
Kod:
      MsgBox Err.Description
    ElseIf Not Intersect(Target, [Sheets("INFO").Range("C11")]) Is Nothing Then
        Range("Sheets("INFO").Range("C11")").Value = Now
        Range("P4").NumberFormat = "mmyyddhhss"
    End If
End Sub
Yapmak istediğim hiç P3 bulaştırmadan P4e ne yazacagına gitsin INFO!C11 den baksın.
Ama nerede bilmiyorum hala P3 ile bir bağlantısı var. Tüm P3 leri silmeme rağmen P3 te değşiklik apınca hata veriyor diğer yerleri değiştirdiğimde sesi çıkmıyor.

Sayfadaki tüm kodlar değiştirmedenönceki hali bu şekilde.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

On Error GoTo CIKIS

    If Not Intersect(Target, [B23:B80]) Is Nothing Then

        Satir = Target.Row

        a = RESIM_SIL(Satir)

        If Range("B" & Satir).Value = "" Then Exit Sub

        a = RESIM_EKLE(Satir)

        Exit Sub

CIKIS:

        MsgBox Err.Description

    ElseIf Not Intersect(Target, [P3]) Is Nothing Then

        Range("P4").Value = Now

        Range("P4").NumberFormat = "mmyyddhhss"

    End If

End Sub

Public Function RESIM_EKLE(pSatir)

On Error GoTo Hata


Dim ResimYolu, dosyaVarmi As Variant

Dim Resim As Object


ResimYolu = "C:\Users\sekre\Desktop\PROFORMA TASK LODA\RESİMLER\" & Range("B" & pSatir).Value & ".jpg"

dosyaVarmi = Dir(ResimYolu)


If dosyaVarmi = "" Then

    ResimYolu = "C:\Users\sekre\Desktop\PROFORMA TASK LODA\RESİMLER\bos.jpg"

End If

Set Resim = ActiveSheet.Pictures.Insert(ResimYolu)

    ' Resim boyutlama

    

    Range("U" & pSatir).Value = Resim.Name

    With Range("G" & pSatir)

    

    Resim.ShapeRange.LockAspectRatio = msoFalse

    Resim.Left = .Left + 2

    Resim.Top = .Top + 1

    Resim.Height = .Height - 2

    Resim.Width = .Width - 5

        

    End With


Exit Function


Hata:

    MsgBox "Hata Oluştu" & vbNewLine & Err.Description

End Function


Public Function RESIM_SIL(pSatir)

On Error GoTo Hata


    ActiveSheet.Shapes.Range(Array(Range("U" & pSatir).Value)).Select

    Selection.Delete


Hata:

    Range("U" & pSatir).Value = ""

End Function
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Merhaba,
Boyutlandırma işlemini yapmadan önce en-boy oranının kilidini kaldırmanız gerekiyor.
Boyutlandırma kodlarından önce Resim.LockAspectRatio = msoFalse satırını ilave ediniz. Hata oluşursa Resim.ShapeRange.LockAspectRatio = msoFalse şeklinde deneyiniz.
İyi çalışmalar...
Kod:
Resim.ShapeRange.LockAspectRatio = msoFalse
çalıştı. çok teşekkür ederim. diğeri hata verdi
 

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,520
Excel Vers. ve Dili
Office 365 Türkçe
İlk verdiğiniz kodlarda P2 idi şimdi P3 oldu , çalışmaması çok normal. :)

Şu şekilde deneyiniz..

Kod:
 Range("P4").Value = Sheets("INFO").Range("C11")
 
Son düzenleme:
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
İlk verdiğiniz kodlarda P2 idi şimdi P3 oldu , çalışmaması çok normal. :)

Şu şekilde deneyiniz..

Kod:
 Range("P4").Value = Sheets("INFO").Range("C11")
o şekilde düzenlemiştim ben aslında. :( konuyu ilk açtığımda p2 p3 olarak başladığı için karışıklık olmaması açısından yazmıştım onu.
Kod:
      MsgBox Err.Description
    ElseIf Not Intersect(Target, [P3]) Is Nothing Then
         Range("P4").Value = Sheets("INFO").Range("C11")
        Range("P4").NumberFormat = "mmyyddhhss"
    End If
End Sub
Bu şekilde oluyor sizin dediğiniz gibi yapınca lakin bu seferde hala P3 tetikliyor makroyu :'(
Yani "
Kod:
ElseIf Not Intersect(Target, [P3]) Is Nothing Then
daki P3 ü INFOC11 yapabilsem sorun çözülecek gibi.
Örnek dosya yükleyebilirim ama yüklediğim dosya geçen sefer virüs var denmişti. ki ben makrolardan dolayı dır diye tahmin ediyorum. lisanslı antivirüs kullandığımdan dolayı.
 
Son düzenleme:

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,520
Excel Vers. ve Dili
Office 365 Türkçe
Siz makroyu "INFO" sayfasından mı tetiklenmesini istiyorsunuz tam olarak anlamadım maalesef. "INFO" sayfasında değilken nasıl tetikleme yapılacak , "INFO" sayfasının kod bölümüne yazmanız gerekir kodları düzenlemeyi de o şekilde yapmalısınız.
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Siz makroyu "INFO" sayfasından mı tetiklenmesini istiyorsunuz tam olarak anlamadım maalesef. "INFO" sayfasında değilken nasıl tetikleme yapılacak , "INFO" sayfasının kod bölümüne yazmanız gerekir kodları düzenlemeyi de o şekilde yapmalısınız.
Vallahi ben bir başkası için bu kadar uğraşırmıydım tereddütteyim. Hakkınızı helal edin .
Evet amacım o idi. Infodan tetiklensin diğer sayfada değişsin.
Aklıma şöyle birşey geldi o şekilde yapıp bırakıcam olduğu kadar en nihayetinde.
Kodu dediğiniz gibi infoya yazıcam . Örnek sonuc ücresini diğer sayfada P4 e P4=INFO!?? diyerek bitirecem . Çokta zorlamamak lazım bazen.

Emeğinize sağlık . çok teşekkürler yeniden.
 
Üst