• DİKKAT

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

Soru VBA Kodundaki Hata nereden Kaynaklanıyor

Katılım
20 Haziran 2008
Mesajlar
697
Excel Vers. ve Dili
Microsoft Office ev ve iş 2019
Merhabalar;

Youtube'da izlediğim bir videonun aynısını yaptım fakat buton kodları çalışmıyor, hata veriyor
Add Picture butonu tıklıyorum Resim seçiyorum Kaydederken Type Mismatsch hatası veriyor debug olarak bu satırı gösteriyor If imagepath <> False Then
Clear
butonunda keza yine hata veriyor

kodlardaki hatanın giderilmesi için yardımcı olabilirmisiniz

Not: Kodların videosu 3.sayfada yeralmaktadır.
 

Ekli dosyalar

Sayfanın kod bölümünde en üst te bu kodu kullanmışsınız

Option Explicit

Bu tanımlama kodunu kullanıyorsanız değişkenleri mutlaka Dim fonksiyonuyla tanımlamanız gerekiyor.

kodları kontrol ediniz.

Kod:
Option Explicit

Private Sub cmdAdd_Click()
On Error Resume Next
Dim imagepath As String
imagepath = Application.GetOpenFilename(filefilter:="Picture files,*.gif;*.jpg;*.jpeg", Title:="Add Picture")

If imagepath <> False Then
Sheet1.Image1.Picture = LoadPicture(imagepath)
Sheet1.Image1.Visible = True
End If
End Sub

Private Sub cmdClear_Click()

Dim PicClear As String

Sheet1.Range("E7").Value = ""
Sheet1.Range("E9").Value = ""
Sheet1.Range("E11").Value = ""
Sheet1.Range("E13").Value = ""
Sheet1.Range("D3").Value = ""

PicClear = ThisWorkbook.Path & "\No Picture.jpg" '   Sheet1.Range("A19").Value
Sheet1.Image1.Picture = LoadPicture(PicClear)
Sheet1.Image1.Visible = True

Sheet1.Range("A19").Value = PicClear

End Sub

Private Sub cmdSave_Click()
Dim LastRow As Long
Dim PicPath As String
Dim NamePic As String
Dim PicClear As String


If Sheet1.Range("E7").Value = "" Then MsgBox "Please enter the Name", vbCritical: Exit Sub
If Sheet1.Range("E9").Value = "" Then MsgBox "Please enter Email", vbCritical: Exit Sub
If Sheet1.Range("E11").Value = "" Then MsgBox "Please enter Phone number", vbCritical: Exit Sub
If Sheet1.Range("E13").Value = "" Then MsgBox "Please enter the country", vbCritical: Exit Sub

LastRow = Sheet2.Range("A" & Rows.Count).End(xlUp).Row + 1

Sheet2.Cells(LastRow, "A").Value = Sheet1.Range("E7").Value
Sheet2.Cells(LastRow, "B").Value = Sheet1.Range("E9").Value
Sheet2.Cells(LastRow, "C").Value = Sheet1.Range("E11").Value
Sheet2.Cells(LastRow, "D").Value = Sheet1.Range("E13").Value

NamePic = Sheet1.Range("E7").Text
SavePicture Image1.Picture, ThisWorkbook.Path & "\" & NamePic & ".jpg"
PicPath = ThisWorkbook.Path & "\" & NamePic & ".jpg"

Sheet2.Cells(LastRow, "E").Value = PicPath
MsgBox "Save Success", vbInformation

Sheet1.Range("E7").Value = ""
Sheet1.Range("E9").Value = ""
Sheet1.Range("E11").Value = ""
Sheet1.Range("E13").Value = ""
Sheet1.Range("D3").Value = ""


PicClear = Sheet1.Range("A19").Value
Sheet1.Image1.Picture = LoadPicture(PicClear)
Sheet1.Image1.Visible = True


End Sub

Private Sub cmdSearch_Click()

Dim Lsearch As Integer
Dim PicClear As String

Sheet2.Range("G1").Value = Sheet1.Range("D3").Value

If IsNumeric(Sheet2.Range("F1").Value) = True Then
Lsearch = Sheet2.Range("F1").Value

Sheet1.Range("E7").Value = Sheet2.Cells(Lsearch, "A").Value
Sheet1.Range("E9").Value = Sheet2.Cells(Lsearch, "B").Value
Sheet1.Range("E11").Value = Sheet2.Cells(Lsearch, "C").Value
Sheet1.Range("E13").Value = Sheet2.Cells(Lsearch, "D").Value

PicSearch = Sheet2.Cells(Lsearch, "E").Value
Sheet1.Image1.Picture = LoadPicture(PicSearch)
Sheet1.Image1.Visible = True

Else
MsgBox "This contact does not exist"

End If

End Sub
 
Halit üstadım, bu Option satırını kullanmanın tanımlamaya zorlamak dışında, işlev açısından bir gerekliliği var mı?
 
Evet mutlaka var
Tam olarak bilmemekteyim ancak bir kaç defa hata aldığımı hatırlıyorum.
Buradaki etki kod bölümünde kodlar çok ise değişken tanımlamalar yapılmamışsa değişkenler bazen hata vermektedir.
 
Teşekkürler Üstadım..

Dim imagepath As String
imagepath = Application.GetOpenFilename(filefilter:="Picture files,*.gif;*.jpg;*.jpeg", Title:="Add Picture")

If imagepath <> False Then
Sheet1.Image1.Picture = LoadPicture(imagepath)
Sheet1.Image1.Visible = True
End If

buradaki if bloğunda hata döndü
 
Halit üstadım, bu Option satırını kullanmanın tanımlamaya zorlamak dışında, işlev açısından bir gerekliliği var mı?

Option Explicit tanımlamasını kullanmak gerekli değildir. Tercih size kalmıştır. Projenizde eğer değişkenleri mutlaka tanımlamak istiyorsanız, bu komut size tanımlama yapmayı zorunlu kılarak uyarı yapacaktır. Yani projenizde hata yapmanızı engellemiş olacaktır. Bu satırı kullanmazsanız, tanımlanmamış tüm değişkenler varyant olarak kabul edilerek işlem yapılır. Aşağıdaki linki incelemenizi öneririm. Değişkenler, programlamanın en önemli konularından birisidir.

 
Son düzenleme:
Geri
Üst