Özellik ikonu

Image

İndirme izni yok

Genel Bakış

Image (Resim denetimi), UserForm üzerine ya da çalışma sayfasına ActiveX denetimi olarak eklenen ve bir resim dosyasını gösteren denetimdir. Logo, ürün fotoğrafı ya da simge gibi görselleri forma yerleştirmek ve bunları kod ile değiştirmek için kullanılır. Denetim yalnızca resim gösterir; resmi düzenleme araçları sunmaz.

Image denetimi nedir ve nereye eklenir​

Image denetimi, MSForms (Microsoft Forms) kitaplığının bir parçasıdır. İki yerde kullanılabilir:
  • UserForm: Geliştirici > Visual Basic (Developer > Visual Basic) ile VBA düzenleyicisini açın, Ekle > UserForm (Insert > UserForm) ile bir form oluşturun, ardından Araç Kutusu'ndaki Image simgesini forma sürükleyin. Varsayılan adı Image1, Image2 biçimindedir.
  • Çalışma sayfası: Geliştirici > Ekle > ActiveX Denetimleri > Resim (Developer > Insert > ActiveX Controls > Image) yolunu izleyin. Bu durumda denetim sayfadaki bir nesne olarak durur ve resim çalışma kitabının içine gömülür.
Bu denetim, Ekle > Resimler (Insert > Pictures) ile eklenen sıradan resimlerden farklıdır. Image bir denetimdir; olayları (tıklama, fare hareketi gibi) vardır ve VBA ile özellikleri değiştirilebilir. Geliştirici sekmesi görünmüyorsa Dosya > Seçenekler > Şeridi Özelleştir (File > Options > Customize Ribbon) bölümünden etkinleştirin.

Önemli özellikler​

Image denetiminde en sık kullanılan özellikler şunlardır:
  • Picture: Gösterilen resmi belirler. Kodla atama yapılırken genellikle LoadPicture işlevi kullanılır.
  • PictureSizeMode: Resmin denetim kutusuna nasıl sığdırılacağını belirler. fmPictureSizeModeClip (0) resmi gerçek boyutunda bırakır ve taşan kısmı keser, fmPictureSizeModeStretch (1) resmi kutuyu dolduracak şekilde gerer, fmPictureSizeModeZoom (3) en boy oranını koruyarak sığdırır. Varsayılan değer Clip'tir.
  • PictureAlignment: Resmin kutu içindeki konumunu belirler: fmPictureAlignmentTopLeft (0), TopRight (1), Center (2), BottomLeft (3), BottomRight (4). Varsayılan Center'dır.
  • PictureTiling: True olursa resim kutuyu kaplayacak şekilde döşenir (mozaik).
  • BorderStyle: fmBorderStyleNone (0, kenarlıksız) ya da fmBorderStyleSingle (1, tek çizgi). Varsayılan kenarlıksızdır.
  • BorderColor: Kenarlık rengi. Yalnızca BorderStyle tek çizgi iken görünür.
  • SpecialEffect: Kutunun üç boyutlu görünümü: Flat (0), Raised (1), Sunken (2), Etched (3), Bump (6).
  • BackColor ve BackStyle: Resmin arkasında kalan alanın rengi ve saydam ya da opak olması.
  • AutoSize: True olursa denetim, resmin boyutuna göre yeniden boyutlanır.
  • Visible, Enabled, ControlTipText: Görünürlük, etkinlik ve fare üzerine gelince çıkan ipucu metni.
  • Left, Top, Width, Height: Denetimin konumu ve boyutu (punto cinsinden).

Önemli yöntemler ve olaylar​

Image denetimi klavye odağı almadığı için SetFocus gibi odak yöntemlerini kullanmanıza gerek kalmaz. Sık kullanılan yöntemler ve olaylar:
  • Move: Denetimi yeni bir konuma taşır ya da boyutunu değiştirir.
  • ZOrder: Denetimin diğer denetimlere göre ön ya da arka katmanda durmasını sağlar.
  • Click ve DblClick: Resme tıklandığında ve çift tıklandığında çalışır.
  • MouseDown, MouseMove, MouseUp: Fare düğmesi basıldığında, fare resmin üzerinde hareket ettiğinde ve düğme bırakıldığında çalışır. Resim üzerinde sürükleme ya da koordinat okuma için kullanılır.
  • BeforeDragOver ve BeforeDropOrPaste: Sürükle-bırak işlemleri için kullanılır.
  • Error: Denetimde bir hata oluştuğunda çalışır.
Olay yordamı nereye yazılır: UserForm üzerindeki Image denetiminin olayları, o UserForm'un kod modülüne yazılır. Forma çift tıklayıp kod penceresini açın, üstteki denetim listesinden Image1'i, sağdaki listeden olayı seçin. Çalışma sayfasındaki ActiveX Image'ın olayları ise o sayfanın kod modülüne yazılır.

Resim yükleme ve çalışma sayfasında kullanım​

Resmi çalışma zamanında yüklemek için LoadPicture işlevi kullanılır. Resmi kaldırmak için boş bir dosya adı verilir:
VBA 2 satır
Me.Image1.Picture = LoadPicture("C:\Resimler\logo.jpg")
Me.Image1.Picture = LoadPicture("")
İlk satır resmi yükler, ikinci satır denetimi boşaltır. LoadPicture BMP, JPG, GIF, ICO, WMF ve CUR dosyalarını okur; yeni Excel sürümlerinde PNG dosyaları da genellikle yüklenir, ancak saydamlık (alfa) bilgisi korunmayabilir. Sorun yaşarsanız JPG ya da BMP kullanın.
Çalışma sayfasındaki bir ActiveX Image denetimine kod modülünden doğrudan adıyla ulaşabilirsiniz. Başka bir modülden ise OLEObjects koleksiyonu kullanılır:
VBA 2 satır
Sheets("Sayfa1").Image1.Picture = LoadPicture("C:\Resimler\logo.jpg")
Sheets("Sayfa1").OLEObjects("Image1").Object.PictureSizeMode = 3
Sayfadaki denetimin özelliklerine OLEObjects(...).Object üzerinden ulaşıldığına dikkat edin; Left, Top, Width, Height gibi yerleşim özellikleri ise doğrudan OLEObject üzerindedir. Tasarım modunda denetimi seçip sağ tıklayarak Özellikler (Properties) penceresinden de Picture özelliğine dosya atayabilirsiniz; bu durumda resim çalışma kitabının içine gömülür ve dosya yolu gerekmez.

1. Forma logo yükleme​

Bu örnekte bir UserForm üzerinde Image1 adlı bir Image denetimi bulunur. Aşağıdaki kodu o UserForm'un kod modülüne yapıştırın (forma çift tıklayın ya da F7 tuşuna basın). Kod, form açılırken çalışma kitabıyla aynı klasördeki logo.jpg dosyasını yükler, dosya yoksa denetimi gizler. Sayfadaki tablo, formda kullanılan dosyaları belgelemek içindir.
VBA 19 satır
Option Explicit

Private Sub UserForm_Initialize()
    Dim yol As String
    yol = ThisWorkbook.Path & "\logo.jpg"

    ' Dosya varsa resmi yükle
    If Dir(yol) <> "" Then
        With Me.Image1
            .Picture = LoadPicture(yol)
            .PictureSizeMode = fmPictureSizeModeZoom
            .PictureAlignment = fmPictureAlignmentCenter
            .BorderStyle = fmBorderStyleNone
        End With
    Else
        ' Dosya bulunamadıysa boş bir kutu göstermeyin
        Me.Image1.Visible = False
    End If
End Sub
Image
Formülünü incelemek için bir hücre seçin.
ABC
1Form ÖğesiDosya AdıBoyut Modu
2Image1logo.jpgZoom
3Image2kase.gifStretch
Logo ListesiExcelDepo v1.0.0
Bu kod bir UserForm içinde çalıştığı için burada çalıştırılmaz. Form açıldığında logo.jpg bulunursa en boy oranı korunarak ve ortalanarak gösterilir. Dosya bulunamazsa Dir işlevi boş metin döndürür ve Image1 gizlenir; böylece formda boş bir kutu kalmaz. Dir ile dosya varlığını denetlemek, LoadPicture'ın dosya yoksa vereceği çalışma zamanı hatasını da önler.

2. Listeden seçilen ürünün resmini gösterme​

Sayfada ürün adları ve her ürüne ait resim dosya adları bulunur. UserForm üzerinde ComboBox1 ve Image1 denetimleri vardır. Aşağıdaki kodu o UserForm'un kod modülüne yapıştırın. Resim dosyaları, çalışma kitabının bulunduğu klasördeki Resimler klasöründe durmalıdır.
VBA 37 satır
Option Explicit

Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ThisWorkbook.Worksheets("Ürün Resimleri")

    ' Ürün adlarını açılır listeye ekle
    For i = 2 To 6
        Me.ComboBox1.AddItem ws.Cells(i, 1).Value
    Next i

    Me.Image1.PictureSizeMode = fmPictureSizeModeZoom
End Sub

Private Sub ComboBox1_Change()
    Dim ws As Worksheet
    Dim dosya As String

    ' Henüz bir seçim yoksa çık
    If Me.ComboBox1.ListIndex < 0 Then Exit Sub

    Set ws = ThisWorkbook.Worksheets("Ürün Resimleri")
    dosya = ThisWorkbook.Path & "\Resimler\" & ws.Cells(Me.ComboBox1.ListIndex + 2, 2).Value

    If Dir(dosya) <> "" Then
        Me.Image1.Picture = LoadPicture(dosya)
    Else
        ' Resim yoksa denetimi boşalt
        Me.Image1.Picture = LoadPicture("")
    End If
End Sub

Private Sub Image1_Click()
    Me.Caption = "Seçili ürün: " & Me.ComboBox1.Value
End Sub
Image
Formülünü incelemek için bir hücre seçin.
AB
1ÜrünDosya Adı
2Masa Lambasılamba.jpg
3Ofis Koltuğukoltuk.jpg
4Kitaplıkkitaplik.jpg
5Çalışma Masasımasa.jpg
6Dosya Dolabıdolap.jpg
Ürün ResimleriExcelDepo v1.0.0
Form açıldığında ürün adları açılır listeye dolar. Kullanıcı bir ürün seçtiğinde Change olayı çalışır; listedeki sıraya göre sayfadan dosya adı okunur ve resim Image1'e yüklenir. Dosya bulunamazsa LoadPicture("") ile önceki ürünün resmi temizlenir. Resme tıklandığında Click olayı formun başlığına seçili ürünün adını yazar. Form gösterme işlemi burada çalıştırılmadığı için sonuç yalnızca anlatılmıştır.

3. PictureSizeMode sabitlerinin değerleri​

Image denetiminin PictureSizeMode özelliği sayısal değerler alır. Bu örnek, standart bir modüle yapıştırılan makroyla A sütunundaki mod adlarına karşılık gelen sayısal değeri ve davranışı yan sütunlara yazar. Böylece sabitlerin değerlerini sayfada görebilirsiniz. Kod Image denetimine ihtiyaç duymadığı için doğrudan çalıştırılabilir.
VBA 22 satır
Option Explicit

Sub ModDegerleriniYaz()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ThisWorkbook.Worksheets("Mod Değerleri")

    For i = 2 To 4
        Select Case ws.Cells(i, 1).Value
            Case "Clip"       ' fmPictureSizeModeClip
                ws.Cells(i, 2).Value = 0
                ws.Cells(i, 3).Value = "Resim kırpılır, boyutu değişmez"
            Case "Stretch"    ' fmPictureSizeModeStretch
                ws.Cells(i, 2).Value = 1
                ws.Cells(i, 3).Value = "Kutuyu dolduracak şekilde gerilir"
            Case "Zoom"       ' fmPictureSizeModeZoom
                ws.Cells(i, 2).Value = 3
                ws.Cells(i, 3).Value = "En boy oranı korunarak sığdırılır"
        End Select
    Next i
End Sub
Image
Formülünü incelemek için bir hücre seçin.
ABC
1ModDeğerDavranış
2Clip0Resim kırpılır, boyutu değişmez
3Stretch1Kutuyu dolduracak şekilde gerilir
4Zoom3En boy oranı korunarak sığdırılır
Mod DeğerleriExcelDepo v1.0.0
Makro her satırdaki mod adına bakar ve karşılığını yazar. Clip için değer 0, Stretch için 1, Zoom için 3 olarak yazılır. Davranış sütununda ise sırasıyla şu açıklamalar görünür: Resim kırpılır, boyutu değişmez, Kutuyu dolduracak şekilde gerilir ve En boy oranı korunarak sığdırılır. Image denetiminde bu değerleri sayı olarak yazmak yerine fmPictureSizeModeClip, fmPictureSizeModeStretch ve fmPictureSizeModeZoom adlarını kullanmak kodu daha okunur kılar.

Kullanırken dikkat edin​

  • Dosya yolunu ve varlığını denetleyin: LoadPicture, dosya bulunamazsa çalışma zamanı hatası verir. Resmi yüklemeden önce Dir işleviyle dosyanın var olduğunu denetleyin. Yolu sabit yazmak yerine ThisWorkbook.Path ile çalışma kitabının klasörünü temel alırsanız dosyayı başka bilgisayara taşıdığınızda kod bozulmaz.
  • Desteklenen biçimler: LoadPicture BMP, JPG, GIF, ICO, WMF ve CUR biçimlerini okur. PNG dosyaları yeni sürümlerde çoğunlukla yüklenir ancak saydam arka planlar beklediğiniz gibi görünmeyebilir. Çok büyük çözünürlüklü resimler formun açılışını yavaşlatır; resmi önceden küçültmeniz önerilir.
  • Resim bozuk görünüyorsa PictureSizeMode'a bakın: Varsayılan Clip modunda büyük bir resmin yalnızca bir bölümü görünür. Resmin tamamını bozmadan göstermek için fmPictureSizeModeZoom, kutuyu tamamen doldurmak için (oran bozulabilir) fmPictureSizeModeStretch kullanın.
  • Gömülü resim dosya boyutunu büyütür: Özellikler penceresinden Picture'a atanan ya da sayfadaki ActiveX Image'a verilen resim çalışma kitabının içine gömülür ve dosya boyutunu artırır. Kodla LoadPicture kullanırsanız resim dosyada saklanmaz, ancak bu kez resim dosyasının her bilgisayarda aynı yolda bulunması gerekir.
  • Mac ve ActiveX sınırlaması: UserForm içindeki Image denetimi ile çalışma sayfasındaki ActiveX denetimleri Mac için Excel'de sınırlı desteklenir ya da hiç desteklenmez. Dosyayı farklı platformlarda paylaşacaksanız bunu göz önünde bulundurun.
  • Sayfadaki sıradan resimler için farklı yöntem: Ekle menüsünden eklenen resimler Image denetimi değil, Shape nesnesidir. Onları kodla yönetmek için Shapes koleksiyonu ve AddPicture yöntemi kullanılır; Picture, PictureSizeMode gibi Image özellikleri bu nesnelerde yoktur.
  • İlgili konular:
    • LoadPicture: Resim dosyasını yükleyen işlev.
    • UserForm: Image denetiminin üzerinde yer aldığı form nesnesi.
    • ComboBox ve ListBox: Resim seçimi için birlikte kullanılan denetimler.
    • Dir: Dosya varlığını denetleyen işlev.
    • OLEObjects: Sayfadaki ActiveX denetimlerine ulaşma koleksiyonu.
    • Shapes.AddPicture: Sayfaya sıradan resim ekleme yöntemi.
    • ThisWorkbook.Path: Çalışma kitabının klasörünü verir.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
9
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst