• DİKKAT

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

Type mismatch hatası

gezgin-49

Altın Üye
Katılım
17 Ekim 2006
Mesajlar
669
Excel Vers. ve Dili
Türkçe 2003
sayın üstadlarım aşağıdaki kodlarda kırmızı renkli olan kısımda "type mismatch" hatası veriyor. çözemedim, yardımlarınızı bekliyorum

Sub isimsırala()
Set s1 = Sheets("Sayfa1") 'Eski listenin yer aldığı sayfa
Set s2 = Sheets("Sayfa2") 'Yeni listenin oluşturulacağı sayfa
x = 1
For a = 2 To s1.Cells(Rows.Count, "B").End(3).Row
For b = 3 To 9
If s1.Cells(a, b) > 0 Then
For c = 1 To s1.Cells(a, b)
x = x + 1
s2.Cells(x, "A") = x - 1
s2.Cells(x, "B") = s1.Cells(a, "B")
s2.Cells(x, "C") = s1.Cells(1, b)
Next
End If
Next
Next
End Sub
 
Bu hücrede ne değeri var?

s1.Cells(a, b)
 
Sayın Üstadım Korhan Ayhan s1.Cells(a,b) hücresinde a'da adı soyadı, b'de ise dağıtıcı isimleri var
 
Ama"c" döngüsü sayısal bir döngü değil mi?

Bahsettiğiniz veriler metinsel olduğu için bu hatayı alıyorsunuz.
 
sayın üstadım, Sayfa1 de b3 de isimler var, c3 de ise dağıtıcı isimleri var, d3 de mahalle isimleri, E2,F2, G2, H2, I2, j2 ve K2 de ise gazete/dergi isimleri var, dergi isimleri sabit kalacak şekilde, örneğin, b3 te Ali ..... isimli kişinin e2 de yazılı gazete/dergiden 2 adet, g2 de yazılı gazete/dergiden de 1 adet aboneliğini sayfa2 ye abone olduğu gazete/dergi ismi ile aktarmak istiyorum, yukarıdaki döngü bunun için ama bir türlü yapamadım.
 
Hata veren satır bir döngü başlangıcıdır.

Mesela For C= 1 to 1000 şeklinde bir değer almalıdır. Ama siz diyorsunuz ki s1.Cells(a, b) hücresinde metinsel ifade var. Benim örnek olarak verdiğim 1000 değer yerine isim yazarsanız makro hata verir.

Döngüye uygun değeri atamanız gerekir.
 
Sayın Üstadlarım bu kodların açıklamasını tam anlayamadım, hangi kod hangi hücreden veri alıp diğer sayfaya aktarıyor tam olarak bilmem lazım. beni aydınlatırsanız memnun olurum, saygılarımla

Sub isimsırala()
Set s1 = Sheets("Sayfa1") 'Eski listenin yer aldığı sayfa
Set s2 = Sheets("Sayfa2") 'Yeni listenin oluşturulacağı sayfa
x = 1
For a = 2 To s1.Cells(Rows.Count, "B").End(3).Row
For b = 3 To 9
If s1.Cells(a, b) > 0 Then
For c = 1 To s1.Cells(a, b)
x = x + 1
s2.Cells(x, "A") = x - 1
s2.Cells(x, "B") = s1.Cells(a, "B")
s2.Cells(x, "C") = s1.Cells(1, b)
Next
End If
Next
Next
End Sub
 
Bence bu kodu bir kenara bırakıp, dosya üzerinde istediğinizi net olarak belirtirseniz daha kısa ve öz çözümler sunulabilir.
 
Geri
Üst