Herkese merhaba sevgili dostlar. Benim bir problemim var. Excell veri kitabı deneme sayfası içindeki verileri vba'da yazmış olduğum kod ile yeni sayfasında tarih ve açıklama referanslarına göre tasniflemek istiyorum. Fakat döngü 55. satırda tarih değerini algılamıyor yardımcı olursanız sevinirim. Kod aşağıdaki gibidir. Ek'te de dosyayı bulabilirsiniz.
Dim tarih As Date
Dim acıklama As String
Dim x As Integer
Sub Gunegoretasımayaz()
Sheets.Add
Sheets(ActiveSheet.Name).Name = "yeni"
Sheets("yeni").Cells(1, 1) = "Tarih"
Sheets("yeni").Cells(1, 2) = "Tonaj"
Sheets("yeni").Cells(1, 3) = "acıklama"
For x = 2 To 15000
tarih = Cells(x, 3).Value
acıklama = Cells(x, 11)
tonaj = Cells(x, 9)
Set bul = Sheets("yeni").Range("A2:A35").Find(What:=tarih, MatchCase:=True, lookat:=xlWhole)
'Set sat = Sheets("yeni").Columns("A").Find(tarih, , xlValues, xlWhole)
Set satir1 = Sheets("yeni").Columns("C").Find(acıklama, , xlValues, xlWhole)
If bul Is Nothing And satir1 Is Nothing Then
bul = Sheets("yeni").Columns("A").Find(EndDown).Row
Sheets("yeni").Cells(bul, 1) = tarih
Sheets("yeni").Cells(bul, 2) = tonaj + Sheets("yeni").Cells(bul, 2)
Sheets("yeni").Cells(bul, 3) = acıklama
Else
yatay = FindDate(tarih, acıklama)
If yatay = 0 Then
Else
Toplam = Sheets("yeni").Cells(yatay, 2)
Toplam = Toplam + tonaj
Sheets("yeni").Cells(yatay, 2) = Toplam
End If
End If
Next
End Sub
Function FindDate(tarih As Date, acıklama As String)
Dim Start, i As Integer
Dim DateFound As Boolean
Dim acıklamaFound As Boolean
i = 1
DateFound = False
Do
If tarih = Sheets("yeni").Cells(i, 1) And acıklama = Sheets("yeni").Cells(i, 3) Then
FindDate = i: DateFound = True: acıklamaFound = True
Else: i = i + 1
If i = 32765 Then
i = 32765
' arkadaş burada ne arıyorsa onu bulamıyor ve int sayısını doldurana kadar çalışıyor
' Sonra da overflow hatası veriyor..
End If
End If
Loop Until DateFound
End Function
Dim tarih As Date
Dim acıklama As String
Dim x As Integer
Sub Gunegoretasımayaz()
Sheets.Add
Sheets(ActiveSheet.Name).Name = "yeni"
Sheets("yeni").Cells(1, 1) = "Tarih"
Sheets("yeni").Cells(1, 2) = "Tonaj"
Sheets("yeni").Cells(1, 3) = "acıklama"
For x = 2 To 15000
tarih = Cells(x, 3).Value
acıklama = Cells(x, 11)
tonaj = Cells(x, 9)
Set bul = Sheets("yeni").Range("A2:A35").Find(What:=tarih, MatchCase:=True, lookat:=xlWhole)
'Set sat = Sheets("yeni").Columns("A").Find(tarih, , xlValues, xlWhole)
Set satir1 = Sheets("yeni").Columns("C").Find(acıklama, , xlValues, xlWhole)
If bul Is Nothing And satir1 Is Nothing Then
bul = Sheets("yeni").Columns("A").Find(EndDown).Row
Sheets("yeni").Cells(bul, 1) = tarih
Sheets("yeni").Cells(bul, 2) = tonaj + Sheets("yeni").Cells(bul, 2)
Sheets("yeni").Cells(bul, 3) = acıklama
Else
yatay = FindDate(tarih, acıklama)
If yatay = 0 Then
Else
Toplam = Sheets("yeni").Cells(yatay, 2)
Toplam = Toplam + tonaj
Sheets("yeni").Cells(yatay, 2) = Toplam
End If
End If
Next
End Sub
Function FindDate(tarih As Date, acıklama As String)
Dim Start, i As Integer
Dim DateFound As Boolean
Dim acıklamaFound As Boolean
i = 1
DateFound = False
Do
If tarih = Sheets("yeni").Cells(i, 1) And acıklama = Sheets("yeni").Cells(i, 3) Then
FindDate = i: DateFound = True: acıklamaFound = True
Else: i = i + 1
If i = 32765 Then
i = 32765
' arkadaş burada ne arıyorsa onu bulamıyor ve int sayısını doldurana kadar çalışıyor
' Sonra da overflow hatası veriyor..
End If
End If
Loop Until DateFound
End Function