- Katılım
- 2 Şubat 2014
- Mesajlar
- 758
- Excel Vers. ve Dili
- 2007 Türkçe
Merhabalar.
Sayın Korhan Hocam.
Kırmızı ile boyadığım yani veri alınacak alanda boş hücre olduğunda
kod hata veriyor. Hata verdiği satırı ise mavi ile boyadım.
Kod satırından CDbl yi çıkarttığım zaman kod yine hatasız çalışıyor boş
hücre olmasına rağmen.
Acaba bu hatayı nasıl düzeltebiliriz ?
Veri alacağım alana gelen verilerin boş mu dolu mu olduğunu bilmek
mümkün değil.
Sub Makro4()
Dim s1 As Worksheet, s2 As Worksheet, son As Long
Dim Zaman As Double, Dizi As Variant, s As Long, k As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set s1 = Sheets("Satışlar")
Set s2 = Sheets("Data")
'*****************************************************************************
tr = s2.Cells(s2.Rows.Count, "C").End(3).Row
Dizi = s2.Range("B1:W" & tr).Value
With CreateObject("Scripting.Dictionary")
For s = 7 To UBound(Dizi, 1)
.Item(Dizi(s, 2) & Dizi(s, 6) & Dizi(s, 7)) = Dizi(s, 4) & "#" & Dizi(s, 12) & "#" & Dizi(s, 15) & "#" & Dizi(s, 16) _
& "#" & Dizi(s, 17) & "#" & Dizi(s, 18) & "#" & Dizi(s, 19) & "#" & Dizi(s, 20) & "#" & Dizi(s, 21)
Next
'**************************************************************************************************
ws = s1.Cells(s1.Rows.Count, "I").End(3).Row
Dizi = s1.Range("H1:X" & ws).Value
For k = 5 To UBound(Dizi, 1)
If .exists(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)) Then
Dizi(k, 8) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(0)
Dizi(k, 9) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(1)
Dizi(k, 11) = CDbl(Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(2))
Dizi(k, 12) = CDbl(Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(3))
Dizi(k, 13) = CDbl(Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(4))
Dizi(k, 14) = CDbl(Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(5))
Dizi(k, 15) = CDbl(Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(6))
Dizi(k, 16) = CDbl(Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(7))
End If: Next
End With
s1.Range("H1:X" & UBound(Dizi)) = Dizi
Set s1 = Nothing: Set s2 = Nothing
End Sub
Sayın Korhan Hocam.
Kırmızı ile boyadığım yani veri alınacak alanda boş hücre olduğunda
kod hata veriyor. Hata verdiği satırı ise mavi ile boyadım.
Kod satırından CDbl yi çıkarttığım zaman kod yine hatasız çalışıyor boş
hücre olmasına rağmen.
Acaba bu hatayı nasıl düzeltebiliriz ?
Veri alacağım alana gelen verilerin boş mu dolu mu olduğunu bilmek
mümkün değil.
Sub Makro4()
Dim s1 As Worksheet, s2 As Worksheet, son As Long
Dim Zaman As Double, Dizi As Variant, s As Long, k As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set s1 = Sheets("Satışlar")
Set s2 = Sheets("Data")
'*****************************************************************************
tr = s2.Cells(s2.Rows.Count, "C").End(3).Row
Dizi = s2.Range("B1:W" & tr).Value
With CreateObject("Scripting.Dictionary")
For s = 7 To UBound(Dizi, 1)
.Item(Dizi(s, 2) & Dizi(s, 6) & Dizi(s, 7)) = Dizi(s, 4) & "#" & Dizi(s, 12) & "#" & Dizi(s, 15) & "#" & Dizi(s, 16) _
& "#" & Dizi(s, 17) & "#" & Dizi(s, 18) & "#" & Dizi(s, 19) & "#" & Dizi(s, 20) & "#" & Dizi(s, 21)
Next
'**************************************************************************************************
ws = s1.Cells(s1.Rows.Count, "I").End(3).Row
Dizi = s1.Range("H1:X" & ws).Value
For k = 5 To UBound(Dizi, 1)
If .exists(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)) Then
Dizi(k, 8) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(0)
Dizi(k, 9) = Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(1)
Dizi(k, 11) = CDbl(Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(2))
Dizi(k, 12) = CDbl(Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(3))
Dizi(k, 13) = CDbl(Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(4))
Dizi(k, 14) = CDbl(Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(5))
Dizi(k, 15) = CDbl(Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(6))
Dizi(k, 16) = CDbl(Split(.Item(Dizi(k, 1) & Dizi(k, 5) & Dizi(k, 6)), "#")(7))
End If: Next
End With
s1.Range("H1:X" & UBound(Dizi)) = Dizi
Set s1 = Nothing: Set s2 = Nothing
End Sub