Makro ile çekilen fotoyu hücreye ortalamak

Katılım
4 Ekim 2007
Mesajlar
632
Excel Vers. ve Dili
OFFİCE 365
Altın Üyelik Bitiş Tarihi
06-10-2025
Arkadaşlar merhaba, elimde aşağıdaki kod var fakat resmi tanımlı hücrenin soluna yaslıyor. Hücreyi ortalayacak şekilde güncellemek istiyorum. Yardımlarınız için şimdiden teşekkürler.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
Dim p As Object, t As Double, l As Double, w As Double, h As Double

ResimDosya = "C:\Foto" & "\" & Target.Value & ".jpg"
'ResimDosya = "C:\Foto" & "\" & Target.Offset(0, 1).Value & ".jpg"
If Dir(ResimDosya) = "" Then Exit Sub
Set p = ActiveSheet.Pictures.Insert(ResimDosya)

With Cells(Target.Row, Target.Column - 1)
t = .Top
l = .Left
w = .Offset(0, .Columns.Count).Left - .Left
h = .Offset(.Rows.Count, 0).Top - .Top
End With

With p
.Top = t
.Left = l
.Width = w
.Height = h
End With

Set p = Nothing

End Sub
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,629
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Kod:
        p.Top = .Top + 3 'hücrenin üst kısmından 3 birim aşağı kaydırır
        p.Left = .Left + 3 'hücrenin sol kısmından 3 birim sağa kaydırır
Aşağıdaki kodda da açıklama yaptım. Aşağıdaki kodu kullanın
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
    Dim p As Object, t As Double, l As Double, w As Double, h As Double
    ResimDosya = "C:\Foto" & "\" & Target.Value & ".jpg"
    If Dir(ResimDosya) = "" Then Exit Sub
    Set p = ActiveSheet.Pictures.Insert(ResimDosya)
    
    With Cells(Target.Row, Target.Column - 1)
        p.Top = .Top + 3 'hücrenin üst kısmından 3 birim aşağı kaydırır
        p.Left = .Left + 3 'hücrenin sol kısmından 3 birim sağa kaydırır
        p.Width = .Offset(0, .Columns.Count).Left - .Left
        p.Height = .Offset(.Rows.Count, 0).Top - .Top
    End With
End Sub
 
Katılım
4 Ekim 2007
Mesajlar
632
Excel Vers. ve Dili
OFFİCE 365
Altın Üyelik Bitiş Tarihi
06-10-2025
Merhaba.
Kod:
        p.Top = .Top + 3 'hücrenin üst kısmından 3 birim aşağı kaydırır
        p.Left = .Left + 3 'hücrenin sol kısmından 3 birim sağa kaydırır
Aşağıdaki kodda da açıklama yaptım. Aşağıdaki kodu kullanın
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
    Dim p As Object, t As Double, l As Double, w As Double, h As Double
    ResimDosya = "C:\Foto" & "\" & Target.Value & ".jpg"
    If Dir(ResimDosya) = "" Then Exit Sub
    Set p = ActiveSheet.Pictures.Insert(ResimDosya)
   
    With Cells(Target.Row, Target.Column - 1)
        p.Top = .Top + 3 'hücrenin üst kısmından 3 birim aşağı kaydırır
        p.Left = .Left + 3 'hücrenin sol kısmından 3 birim sağa kaydırır
        p.Width = .Offset(0, .Columns.Count).Left - .Left
        p.Height = .Offset(.Rows.Count, 0).Top - .Top
    End With
End Sub
Çok teşekkürler, bir konuda daha yardımınızı isteyebilir miyim? Sadece jpg uzantılı dosyaları okuyor hem jpg hem de png dosyalarını okuyabilecek şekilde kodlanabilir mi?
 
Katılım
4 Ekim 2007
Mesajlar
632
Excel Vers. ve Dili
OFFİCE 365
Altın Üyelik Bitiş Tarihi
06-10-2025
Merhaba, bu kodu ekleyebilecek yardımsever bir arkadaş varmıdır :)
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,069
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Şöyle dener misiniz?

PHP:
ResimDosya = "C:\Foto" & "\" & Target.Value & ".jpg"
If Dir(ResimDosya) = "" Then
    ResimDosya = "C:\Foto" & "\" & Target.Value & ".png"
End If
If Dir(ResimDosya) = "" Then Exit Sub
 
Üst