type mismatch hatası

Katılım
21 Ocak 2013
Mesajlar
422
Excel Vers. ve Dili
2010
başlıkta belirtiğim hatayı alıyorum veri gönderdiğim sayfadaki verileri sıfırladığım zaman alıyorum bu hatayı
Kod:
Dim wsGELENEVRAK, wsGİDENEVRAK, wsPERSONELÖNTANIM, wsDESİMALDOSYA, wsKONUGELEN, wsKONUGİDEN, wsGİDENKURUM, wsGELENKURUM As Worksheet
Dim sonsatır, sonsatır2, sil, deneme As Long
Private Sub Cbgeldiğikurum_Change()
If Cbgeldiğikurum = "" Then Exit Sub
deg = Mid(Cbgeldiğikurum.Value, Len(Cbgeldiğikurum.Value), 1)
If IsNumeric(deg) = True Then
MsgBox "SADECE HARF GİRİNİZ !", vbInformation, "BİLDİRİ"
Cbgeldiğikurum = Mid(Cbgeldiğikurum.Value, 1, Len(Cbgeldiğikurum.Value) - 1)
Cbgeldiğikurum.SetFocus
End If
Cbgeldiğikurum = Replace(Cbgeldiğikurum, "i", "İ")
Cbgeldiğikurum = Replace(Cbgeldiğikurum, "ı", "I")
Cbgeldiğikurum = StrConv(Cbgeldiğikurum, vbUpperCase)
End Sub
Private Sub Cbkonu_Change()
Cbkonu = Replace(Cbkonu, "i", "İ")
Cbkonu = Replace(Cbkonu, "ı", "I")
Cbkonu = StrConv(Cbkonu, vbUpperCase)
End Sub
Private Sub Cmdkaydet_Click()
If Cbgeldiğikurum.Text = "" Then
MsgBox "GELDİĞİ KURUM VE KURULUŞ BOŞ OLAMAZ.", vbInformation, "BİLDİRİ"
Exit Sub
ElseIf Tbtarih.Text = "" Then
MsgBox "TARİH BOŞ OLAMAZ.", vbInformation, "BİLDİRİ"
Exit Sub
ElseIf Tbevrakno.Text = "" Then
MsgBox "EVRAK NO BOŞ OLAMAZ.", vbInformation, "BİLDİRİ"
Exit Sub
ElseIf tbek.Text = "" Then
MsgBox "EK BOŞ OLAMAZ.", vbInformation, "BİLDİRİ"
Exit Sub
ElseIf Cbdesimaldosya.Text = "" Then
MsgBox "DESİMAL DOSYA KODU OLAMAZ.", vbInformation, "BİLDİRİ"
Exit Sub
ElseIf Cbkonu.Text = "" Then
MsgBox "KONUSU OLAMAZ.", vbInformation, "BİLDİRİ"
Exit Sub
ElseIf Cbhavaleedilenmemur.Text = "" Then
MsgBox "HAVALE EDİLEN MEMUR BOŞ OLAMAZ.", vbInformation, "BİLDİRİ"
Exit Sub
End If
sonsatır = WorksheetFunction.CountA(Worksheets("GELENEVRAK").Range("A:A")) + 1
If sonsatır = 2 Then
Worksheets("GELENEVRAK").Cells(sonsatır, 1) = 1
Else
Worksheets("GELENEVRAK").Cells(sonsatır, 1) = Worksheets("GELENEVRAK").Cells(sonsatır - 1, 1) + 1
sonsatır2 = WorksheetFunction.CountA(Worksheets("GELENKURUM").Range("A:A")) + 1
sonsatrı3 = WorksheetFunction.CountA(Worksheets("KONUGELEN").Range("A:A")) + 1
End If
Worksheets("GELENEVRAK").Cells(sonsatır, 2) = Cbgeldiğikurum.Value
Worksheets("GELENEVRAK").Cells(sonsatır, 3) = Tbtarih.Value
Worksheets("GELENEVRAK").Cells(sonsatır, 4) = Tbevrakno.Value
Worksheets("GELENEVRAK").Cells(sonsatır, 5) = tbek.Value
Worksheets("GELENEVRAK").Cells(sonsatır, 6) = Cbdesimaldosya.Value
Worksheets("GELENEVRAK").Cells(sonsatır, 7) = Cbkonu.Value
Worksheets("GELENEVRAK").Cells(sonsatır, 8) = Cbhavaleedilenmemur.Value
Worksheets("GELENKURUM").Cells(sonsatır, 1) = Cbgeldiğikurum.Value
Worksheets("KONUGELEN").Cells(sonsatır, 1) = Cbkonu.Value
MsgBox "VERİ KAYDEDİLDİ.", vbInformation, "BİLDİRİ"
Cbgeldiğikurum.Value = ""
Tbtarih.Value = ""
Tbevrakno.Value = ""
tbek.Value = ""
Cbdesimaldosya.Value = ""
Cbkonu.Value = ""
Cbhavaleedilenmemur.Value = ""
listele
gelen_kurum_listesi
gelen_konu_listesi
End Sub
Private Sub CmdSil_Click()
sor = MsgBox("SEÇİLEN KAYIT SİLİNECEK.", vbYesNoCancel + vbInformation, "BİLDİRİ")
If sor = vbNo Then Exit Sub
If sor = vbCancel Then Exit Sub
For a = 0 To Lstgelenevrak.ListCount - 1
If Lstgelenevrak.Selected(a) Then
ara = Lstgelenevrak.List(a, 0)
Sheets("GELENEVRAK").Range("A:A").Find(what:=ara, lookat:=xlWhole).EntireRow.Delete
End If
Next
End Sub
Private Sub tbek_Change()
Dim sTxt As String
sTxt = tbek.Text
If sTxt = "" Then Exit Sub
If Right(sTxt, 1) Like "[0-9]" = False Then
tbek.Text = Left(sTxt, Len(sTxt) - 1)
End If
End Sub
Private Sub Tbtarih_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(Tbtarih.Value) Then
MsgBox "GEÇERLİ BİR TARİH GİRMEDİNİZ!", vbInformation, "BİLGİ"
Exit Sub
Else
Tbtarih.Value = Format(Tbtarih.Value, "dd.mm.yyyy")
End If
End Sub
Private Sub UserForm_Initialize()

Dim X1 As Long, Y1 As Long, Y2 As Long, X2 As Long
Dim CX As Double, CY As Double
Dim MyCtrl As Control
X1 = Application.Width
Y1 = Application.Height
X2 = Me.Width
Y2 = Me.Height
CX = X1 / X2
CY = Y1 / Y2
Me.Width = X1
Me.Height = Y1
For Each MyCtrl In Me.Controls
MyCtrl.Top = MyCtrl.Top * CY
MyCtrl.Left = MyCtrl.Left * CX
MyCtrl.Width = MyCtrl.Width * CX
MyCtrl.Height = MyCtrl.Height * CY
On Error Resume Next
MyCtrl.Font.Size = MyCtrl.Font.Size * CY
On Error GoTo 0
Next





listele


gelen_kurum_listesi
gelen_konu_listesi
pson = Worksheets("PERSONELÖNTANIM").Cells(Rows.Count, 2).End(3).Row
pliste = Worksheets("PERSONELÖNTANIM").Range("B2:B" & pson)
With Cbhavaleedilenmemur
    .Clear
    .List = pliste
End With
dson = Worksheets("DESİMALDOSYA").Cells(Rows.Count, 2).End(3).Row
dliste = Worksheets("DESİMALDOSYA").Range("D2:D" & dson)
With Cbdesimaldosya
    .Clear
    .List = dliste
End With



End Sub
Sub listele()
Dim X As Long
For X = 1 To 1000000
If Range("GELENEVRAK!A" & X).Value <> "" Then
X = X + 1
Else
Exit For
End If
Next
Lstgelenevrak.ColumnCount = 8
Lstgelenevrak.RowSource = "GELENEVRAK!$A2:H$" & X
Lstgelenevrak.ColumnWidths = "50;;60;150;25;;;100"
End Sub
Sub gelen_kurum_listesi()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set Dizi = CreateObject("Scripting.Dictionary")
Son = Worksheets("GELENKURUM").Cells(Rows.Count, 1).End(3).Row
Liste = Worksheets("GELENKURUM").Range("A1:A" & Son)
With Cbgeldiğikurum
    .Clear
    For i = 1 To UBound(Liste)
        If Not Dizi.exists(Liste(i, 1)) Then
            Dizi.Add Liste(i, 1), Nothing
            .AddItem Liste(i, 1)
        End If
    Next
End With
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Sub gelen_konu_listesi()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set Dizi = CreateObject("Scripting.Dictionary")
Son = Worksheets("KONUGELEN").Cells(Rows.Count, 1).End(3).Row
Liste = Worksheets("KONUGELEN").Range("A1:A" & Son)
With Cbkonu
    .Clear
    For i = 1 To UBound(Liste)
        If Not Dizi.exists(Liste(i, 1)) Then
            Dizi.Add Liste(i, 1), Nothing
            .AddItem Liste(i, 1)
        End If
    Next
End With
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Private Sub Cbgeldiğikurum_DropButtonClick()
    With Cbgeldiğikurum
        For a = LBound(.List) To UBound(.List) - 1
            For B = a + 1 To UBound(.List)
                If .List(B) < .List(a) Then
                    X = .List(a)
                    .List(a) = .List(B)
                    .List(B) = X
                End If
            Next
        Next
    End With
End Sub
Private Sub Cbkonu_DropButtonClick()
    With Cbkonu
        For a = LBound(.List) To UBound(.List) - 1
            For B = a + 1 To UBound(.List)
                If .List(B) < .List(a) Then
                    X = .List(a)
                    .List(a) = .List(B)
                    .List(B) = X
                End If
            Next
        Next
    End With
End Sub
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Aktardığınız değer tanımladığınız veri türüne uygun değil. Aldığınız mesaj.
yani : integer diye tanımladığınız bir değişkene alfabetik bir değer atıyorsunuz gibi...

hata olan yerdeki veri türüyle aktardığınız veriyi kontrol ediniz.
 
Katılım
21 Ocak 2013
Mesajlar
422
Excel Vers. ve Dili
2010
anladım ama sorunu bulamadım verileri işlediğim yerde bilgiler varken sorun yoktu ordaki verileri silince bu hatayı alıyorum nasıl düzeltebilirim
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
Dosya olmayınca kim ne yapabilir?
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Konuyu tam olarak bilmemekle birlikte sayfalarınız boş olduğunda hatayı alıyorsunuz.

Kod:
Sub gelen_kurum_listesi()

On Error GoTo Son
Kod:
Sub gelen_konu_listesi()
On Error GoTo Son
Sub'ların başına böyle bir kod koyarak hatayı önledim. Ama konuyu tam olarak siz bildiğiniz için boş olan sayfa durumunda ne yapılması gerektiğine siz çözüm bulmalısınız.

Yani sayfada son diye son satırı bulup aktardığınız değişkenin değeri 1 ise bu sadece başlık var ama veri yok anlamında.
Kodların belli bir yere kadar çalışıp sonra Sub'dan çıkmayı sağlayabilirsiniz.
 
Katılım
21 Ocak 2013
Mesajlar
422
Excel Vers. ve Dili
2010
Sub gelen_konu_listesi()
On Error GoTo Son
nasıl yaptınız bende hala hata veriyor yapamadım
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Bildiğinizi sandığım için örnek olsun diye söylemiştim.

Kod:
Sub Ornek()

    On Error GoTo Son

    Kodlarınız
    Kodlarınız
    Kodlarınız

Son:

End Sub
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
Selam,
Gelen evrak formunda aşağıdaki Sub lara koymuştum on errer olayını

Sub gelen_kurum_listesi()
Sub gelen_konu_listesi()

on error olayını ben bu iki Sub'a koydum.

Bu tür formda oluşan hataları bulabilmek için formun initialize olayına işaret koyup adım adım ilerlerseniz bulma şansınız var.
Yoksa formu açarken veriyor hatayı , dolayısıla hatanın nerede olduğunu bulamıyorsunuz.

Diğer Formlarda da varsa dediğim yöntemi kullanın.
 
Katılım
21 Ocak 2013
Mesajlar
422
Excel Vers. ve Dili
2010
For i = 1 To UBound(Liste)
If Not Dizi.exists(Liste(i, 1)) Then
hatayı burda veriyor dediğim gibi boş olduğu için yapıyor düzeltemedim yardımınızı bekliyorum
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Ne kadar gelen giden liste olayı varsa aşağıdaki gibi düzenleyin.

Kod:
Sub giden_kurum_listesi()
On error Goto son
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set Dizi = CreateObject("Scripting.Dictionary")
Son = Worksheets("GİDENKURUM").Cells(Rows.Count, 1).End(3).Row
Liste = Worksheets("GİDENKURUM").Range("A1:A" & Son)
With Cbgönderilenkurum
    .Clear
    For i = 1 To UBound(Liste)
        If Not Dizi.exists(Liste(i, 1)) Then
            Dizi.Add Liste(i, 1), Nothing
            .AddItem Liste(i, 1)
        End If
    Next
End With
Son:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 
Katılım
21 Ocak 2013
Mesajlar
422
Excel Vers. ve Dili
2010
teşekkür ederim orada düzelti şimdi burda hata veriyor

Kod:
Private Sub Cbkonu_DropButtonClick()
    With Cbkonu
        For a = LBound(.List) To UBound(.List) - 1
            For B = a + 1 To UBound(.List)
                If .List(B) < .List(a) Then
                    X = .List(a)
                    .List(a) = .List(B)
                    .List(B) = X
                End If
            Next
        Next
    End With
End Sub
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
Userform içindeki bütün kodları gözden geçiriniz. Önerdiğim yöntemi uygulayınız.
 
Katılım
21 Ocak 2013
Mesajlar
422
Excel Vers. ve Dili
2010
neden nu kadar hata veriyor olabilir hiç anlamadım aslında hiç sıkıntı yoktu sadece verileri sıfırlayınca böyle oldu
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
anlamayacak bir şey yok ki, veri olmadığı zaman hatayı alıyorsunuz.
Kodlarda verinin olmadığı durumu kontrol etmelisiniz.
 
Üst