Skip to main content

AccessTr.neT


Excel Vba Da Veri Kaydederken Diğer Sayfaya Kopyasını Almak.

Oğuz Türkyılmaz
Oğuz Türkyılmaz
28
2132

Excel Vba Da Veri Kaydederken Diğer Sayfaya Kopyasını Almak.

#28
(16/05/2021, 19:09)feraz yazdı:
(16/05/2021, 18:35)Oğuz Türkyılmaz yazdı: Formül sorun yaratıyor feraz hocam zaten hücrede 0 olmuş yada boş olmuş farketmiyor
Göndermeye çalışıyorsa koda if ile 0 ise yada boş ise yada formüllü ise diye koşul eklenir.
O konu için extra konu açın bakalım abey.

Resimlerde gösterdim.

[Resim: do.php?img=11043]
https://resim.accesstr.net/do.php?img=11043

[Resim: do.php?img=11044]
https://resim.accesstr.net/do.php?img=11044

[Resim: do.php?img=11045]
https://resim.accesstr.net/do.php?img=11045

[Resim: do.php?img=11046]
https://resim.accesstr.net/do.php?img=11046


Sub Whatsap_ekle_sil_guncelle()

Dim dic As Object, sonAna As Long, keyy As String, kac As Long
Dim syfAna As Worksheet, dizi(), i As Long, say As Long, hatalimi As Boolean

Set dic = CreateObject("Scripting.dictionary")
Set syfAna = ThisWorkbook.Worksheets("Ana_Sayfa")

Application.ScreenUpdating = False
sonAna = syfAna.Range("A:A").Find("*", , , , , xlPrevious).Row
hatalimi = False

With ThisWorkbook.Worksheets("WHATSAPP")
  .Unprotect "171717"
    .Range("A2:A" & Rows.Count).ClearContents
   
    If sonAna < 2 Then
        hatalimi = True: GoTo son
    End If

    kac = WorksheetFunction.CountA(syfAna.Range("A2:A" & Rows.Count))
    If kac = 1 Then
        .Range("A2").Value = syfAna.Cells(sonAna, "AD").Value
        GoTo son
    End If
   
    dizi = syfAna.Range("AD2:AD" & sonAna).Value
    ReDim arr(1 To UBound(dizi), 1 To 1)
    say = 0
   
    For i = LBound(dizi) To UBound(dizi)
      keyy = CStr(dizi(i, 1))
      If Not dic.exists(keyy) Then
          say = say + 1
          dic.Add keyy, 0
          arr(say, 1) = keyy
      End If
    Next
   
    If dic.Count > 0 Then .Range("A2").Resize(dic.Count, 1).Value = arr
son:
Application.ScreenUpdating = True
.Protect "171717"
End With
On Error Resume Next
If hatalimi = True Then
    MsgBox "Kaydedilecek yada güncellenecek yada silinecek veri yok.", vbCritical, "Hata"
Else
    MsgBox "islem tamam.", vbInformation, "Bilgi"
End If
Set sic = Nothing: Set syfAna = Nothing: Erase arr: Erase dizi
End Sub



Boş veriler aktarmasın istiyorsanız ilgili yeri attaki gibi değiştirin.

If keyy <> "" Then ekledim koda ve end if
Ado ilede kısa kod ile yapılır.

    For i = LBound(dizi) To UBound(dizi)
        keyy = CStr(dizi(i, 1))
        If keyy <> "" Then
            If Not dic.exists(keyy) Then
                say = say + 1
                dic.Add keyy, 0
                arr(say, 1) = keyy
            End If
        End If
    Next

Kodun tamamı altta.

Sub Whatsap_ekle_sil_guncelle()

Dim dic As Object, sonAna As Long, keyy As String, kac As Long
Dim syfAna As Worksheet, dizi(), i As Long, say As Long, hatalimi As Boolean

Set dic = CreateObject("Scripting.dictionary")
Set syfAna = ThisWorkbook.Worksheets("Ana_Sayfa")

Application.ScreenUpdating = False
sonAna = syfAna.Range("A:A").Find("*", , , , , xlPrevious).Row
hatalimi = False


With ThisWorkbook.Worksheets("WHATSAPP")
  .Unprotect "171717"
    .Range("A2:A" & Rows.Count).ClearContents
   
    If sonAna < 2 Then
        hatalimi = True: GoTo son
    End If

    kac = WorksheetFunction.CountA(syfAna.Range("A2:A" & Rows.Count))
    If kac = 1 Then
        .Range("A2").Value = syfAna.Cells(sonAna, "AD").Value
        GoTo son
    End If
   
    dizi = syfAna.Range("AD2:AD" & sonAna).Value
    ReDim arr(1 To UBound(dizi), 1 To 1)
    say = 0
   
    For i = LBound(dizi) To UBound(dizi)
        keyy = CStr(dizi(i, 1))
        If keyy <> "" Then
            If Not dic.exists(keyy) Then
                say = say + 1
                dic.Add keyy, 0
                arr(say, 1) = keyy
            End If
        End If
    Next
   
    If say > 0 Then .Range("A2").Resize(say, 1).Value = arr
son:
Application.ScreenUpdating = True
.Protect "171717"
End With
On Error Resume Next
If hatalimi = True Then
    MsgBox "Kaydedilecek yada güncellenecek yada silinecek veri yok.", vbCritical, "Hata"
Else
    MsgBox "islem tamam.", vbInformation, "Bilgi"
End If
Set sic = Nothing: Set syfAna = Nothing: Erase arr: Erase dizi
End Sub
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da

Bu Konudaki Yorumlar
RE: Excel Vba Da Veri Kaydederken Diğer Sayfaya Kopyasını Almak. - Yazar: feraz - 16/05/2021, 20:09