İyi akşamlar
Ekli makro ile anasayfa üzerindeki resim butonu ile seçilen resmi hem ana sayfa üzerinde N4:U29 hücre aralığına hem de resim sayfasında C12:V50 hücre aralığına alıyoruz. Benim istediğim Ana Sayfa üzerinde bulunan Userform 1 üzerinde bulunan resim aç butonunu tıklayıp resmi seçtiğimde ilgili resmin hem resim sayfasına hem de Userform1 de İmage resminin içerisine aldırabilir miyiz ?
Not: Anasayfa ya resim gelmeyecek.Userform1 ve Resim sayfasına gelecek
https://dosyam.org/Zmj/RESİM_BİRLEŞTİR.xlsm
Ekli makro ile anasayfa üzerindeki resim butonu ile seçilen resmi hem ana sayfa üzerinde N4:U29 hücre aralığına hem de resim sayfasında C12:V50 hücre aralığına alıyoruz. Benim istediğim Ana Sayfa üzerinde bulunan Userform 1 üzerinde bulunan resim aç butonunu tıklayıp resmi seçtiğimde ilgili resmin hem resim sayfasına hem de Userform1 de İmage resminin içerisine aldırabilir miyiz ?
Not: Anasayfa ya resim gelmeyecek.Userform1 ve Resim sayfasına gelecek
https://dosyam.org/Zmj/RESİM_BİRLEŞTİR.xlsm
Kod:
Sub PicturesInsertMultiMerge()
Dim Pic As Object, File As Variant, Sht As Worksheet
Dim RngArr, RngArr1 As Range, FlCnt&, SmFl&
ChDrive Environ("SystemDrive"): ChDir Environ("UserProfile") & "\Desktop"
Set Sht = Sheets("RESİM"): Set RngArr = Sht.[C12:V50]
Set s1 = Sheets("ANA SAYFA"): Set RngArr1 = s1.[N4:U29]
File = Application.GetOpenFilename( _
"Resim Dosyaları (*.jfif;*.jpg;*.jpeg;*.png;*.bmp),*.jpg;*.jpeg;*.png;*.bmp ;*.jfif" & _
",Tüm Dosyalar (*.*),*.*", , "Resim Dosyası Seçin...", , True)
If Not IsArray(File) Then Exit Sub
For Each Pic In Sht.Shapes
If Pic.Type <> 1 Then
Sht.Shapes(Pic.Name).Delete
End If
Next Pic
For Each Pic1 In s1.Shapes
If Pic1.Type <> 1 Then
s1.Shapes(Pic1.Name).Delete
End If
Next Pic1
SmFl = UBound(File)
For FlCnt = 1 To SmFl Step 1
On Error GoTo ExitSub
Set Pic = Sht.Pictures.Insert(File(FlCnt))
With Pic
.ShapeRange.LockAspectRatio = msoFalse
.Placement = xlFreeFloating
.Width = IIf(SmFl < 3, RngArr.Width, IIf(SmFl Mod 2 And SmFl = FlCnt, RngArr.Width, RngArr.Width / 2))
.Height = RngArr.Height / IIf(SmFl > 2, (SmFl - ((SmFl + 1) Mod 2) + 1) / 2, 1) * IIf(SmFl = 2, 0.5, 1)
.Top = RngArr.Top + (.Height * (FlCnt - ((FlCnt - 1) Mod 2) - 1) / 2) + IIf(SmFl = 2 And SmFl = FlCnt, .Height, 0)
.Left = RngArr.Left + (.Width * ((FlCnt - 1) Mod 2)) - IIf(SmFl = 2 And SmFl = FlCnt, .Width, 0)
With .ShapeRange.Line 'çerçeve
.Visible = msoTrue 'çerçeveyi göster
.ForeColor.RGB = 16772515 'çerçeve rengi
.Weight = 1 'çerçeve kalınlığı
End With
End With
Set Pic1 = s1.Pictures.Insert(File(FlCnt))
With Pic1
.ShapeRange.LockAspectRatio = msoFalse
.Placement = xlFreeFloating
.Width = IIf(SmFl < 3, RngArr1.Width, IIf(SmFl Mod 2 And SmFl = FlCnt, RngArr1.Width, RngArr1.Width / 2))
.Height = RngArr1.Height / IIf(SmFl > 2, (SmFl - ((SmFl + 1) Mod 2) + 1) / 2, 1) * IIf(SmFl = 2, 0.5, 1)
.Top = RngArr1.Top + (.Height * (FlCnt - ((FlCnt - 1) Mod 2) - 1) / 2) + IIf(SmFl = 2 And SmFl = FlCnt, .Height, 0)
.Left = RngArr1.Left + (.Width * ((FlCnt - 1) Mod 2)) - IIf(SmFl = 2 And SmFl = FlCnt, .Width, 0)
With .ShapeRange.Line 'çerçeve
.Visible = msoTrue 'çerçeveyi göster
.ForeColor.RGB = 1677915 'çerçeve rengi
.Weight = 3 'çerçeve kalınlığı
End With
End With
Next FlCnt
ExitSub:
Set Pic = Nothing: Set Sht = Nothing: Set File = Nothing
End Sub