• DİKKAT

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

Makro ile satır silme

Katılım
31 Ekim 2009
Mesajlar
10
Excel Vers. ve Dili
türkce
Merhaba;

Elimde barkod oluşturmak için hazırlanmış bir excel var.

Bu dosyada barkodlar oluşturup daha sonrada bu oluşturulan barkodları takip ediyoruz.

Benim sorum şu olacaktır.

Daha önceden oluşturulan bu barkodların tekrardan kullanılmaması için kullanılan barkodları silmem gerekiyor, ancak bunu nasıl yapacağımı bilmiyorum.

Ekteki ekran alıntısında hazırlanmış olan dosyayı inceleyebilirsiniz.

Şimdi bu ekran görüntüsünde görüldüğü üzere K sütununda takip numaraları var ben zaman içerisinde bunları sırası ile kullanıyorum.

Kullandığım barkod numaralarını A sütununa çekiyorum.

Daha sonra bu barkodları yazdırıyorum.

Bu kullanılan barkodları satır sil dediğimde yazdırma şablonundaki formüller bozuluyor bu sebepten dolayı kullanılan barkodları seçip içeriği sil demem gerekiyor ardından kullanılmayan barkodları yukarıya doğru tekrar taşımam gerekiyor.

Bu işlemi hergün yaptığım için bu durumu otomatize hale getirmek istiyorum.

Konuyla alakalı yardımcı olursanız sevinirim.

4lJQ2Q.png
 
REsminiz görünmüyor. REsim olarak değil de excel dosyası olarak dosya yükleme sitelerinden birine yükleyip buradan paylaşmanız daha iyi olur.
 
Aşağıdaki işlemleri sırasıyla yapınız:

Öncelikle Barkod VE Müşteri Listesi isimli sayfanızdan bir tane daha oluşturup adını Silinenler yapın.

Barkod sayfasındaki formüllü hücreleri silin, formül kalmasın.

Silinenler sayfası içinde sadece başlık satırı kalsın. İsterseniz sayfa kopyalamak yerine boş bir sayfaya Barkod sayfasının başlık bölümünü de yazabilirsiniz. Bu syfayı silinen barkodları yedeklemek için kullanacağız.

Aşağıdaki kodları kopyalayıp Barkod Sayfanızın kod bölümüne yapıştırın (sayfa adına sağ tık=>Kod görüntüle=>Çıkan sayfaya yapıştır

Daha sonra denemek için Barkod sayfasında C sütununa kod girin, makro eski formüllerinize uygun olarak sonuçları getirecektir.

Silmek istediğiniz satırlarda C sütununa (Örneğin 3. satırı silmek için C3 hücresine) Çift tıklarsanız size silmek isteyip istemeyeceğinizi soracaktır. Evet derseniz o satırı Silinenler sayfasına taşır.

Bu işlemler C2:C200 aralığında geçerlidir:

Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
If Intersect(Target, [C2:C200]) Is Nothing Then Exit Sub
a = Target.Row
Application.EnableEvents = False
    uyarı = MsgBox(Target.Row & ". satırdaki veriyi silmek istiyor musunuz?", vbYesNo)
    If uyarı = vbYes Then
        yeni = Sheets("Silinenler").Cells(Rows.Count, "A").End(3).Row + 1
        Rows(a).Cut Sheets("Silinenler").Cells(yeni, "A")
        Rows(a).Delete
        SendKeys "{Esc}"
    End If
Application.EnableEvents = True

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [C2:C200]) Is Nothing Then Exit Sub
a = Target.Row
Application.EnableEvents = False
If Target <> "" Then
    Cells(a, "A") = Cells(a, "K")
    Cells(a, "D") = WorksheetFunction.IfNa(WorksheetFunction.VLookup(Target, Sheets("Temsilci Datası").[A:G], 2, 0), "")
    Cells(a, "E") = WorksheetFunction.IfNa(WorksheetFunction.VLookup(Target, Sheets("Temsilci Datası").[A:G], 3, 0), "")
    Cells(a, "F") = WorksheetFunction.IfNa(WorksheetFunction.VLookup(Target, Sheets("Temsilci Datası").[A:G], 4, 0), "")
    Cells(a, "G") = WorksheetFunction.IfNa(WorksheetFunction.VLookup(Target, Sheets("Temsilci Datası").[A:G], 5, 0), "")
    Cells(a, "H") = WorksheetFunction.IfNa(WorksheetFunction.VLookup(Target, Sheets("Temsilci Datası").[A:G], 6, 0), "")
    Cells(a, "I") = WorksheetFunction.IfNa(WorksheetFunction.VLookup(Target, Sheets("Temsilci Datası").[A:G], 7, 0), "")
End If
Application.EnableEvents = True
End Sub
 
Çok güzel olmuş saolun ancak birde bu silinecek satır sayısı gün içinde belki 200 adeti bulabiliyor bunun daha kısa bir yolu olabilirmi.

Yani silinecek satırı çift tıklamak yerine daha basit ve toplu işlem yapabilecek bir yol varsa çok hoş olur.

Birde örneğin kısa kod kısmına birşey yazdığımda ilgili alana değerler geliyor ancak diyelimki yanlışlıkla yazıldı onu sildiğimde değerler yine sayfada kalıyor bununda çözümü varsa çok hoş olur.
 
son olarak etiket sekmesinde ne yapsam verileri hep silinenlerden okuyor buda yazdırma yapmama engel oluyor.

etiket sekmesinin verileri barkod sekmesinden alınması için ne yapabilirim.
 
O istedikleriniz beni aşıyor maalesef.
 
son olarak etiket sekmesinde ne yapsam verileri hep silinenlerden okuyor buda yazdırma yapmama engel oluyor.

etiket sekmesinin verileri barkod sekmesinden alınması için ne yapabilirim.

bunadamı birşey yapamayız bilginiz dahilinde.
 
daha anlaşılır yazayım

sizin kodu uyguladığımda

='BARKOD VER MÜŞTERİ LİSTESİ'!A2 olması gereken formül değişiyor ve ='Silinenler'!A2 oluyor bunun değişmesini nasıl önlerim.
 
DOLAYLI fonksiyonu ile veri alınacak sayfayı sabitleyebilirsiniz.
 
Formüllerinizi aşağıdaki şekilde yaparsanız değişmez diye düşünüyorum:

Kod:
=[COLOR="Red"][B]DOLAYLI("[/B][/COLOR]'BARKOD VER MÜŞTERİ LİSTESİ'!A2[COLOR="red"][B]")[/B][/COLOR]
 
="PTT KARGO ETİKETİ / kabul tarihi: "&GÜN(BUGÜN())&"."&AY(BUGÜN())&".2016 / "&'Silinenler'!A2&" GR"
 
Kod:
="PTT KARGO ETİKETİ / kabul tarihi: "&GÜN(BUGÜN())&"."&AY(BUGÜN())&".2016 / "&[COLOR="Red"]DOLAYLI("'BARKOD VER MÜŞTERİ LİSTESİ'!A2")[/COLOR]&" GR"
 
peki bu kodu aşağı doğru uzatmayı nasıl yaparız.

mause ile kodu aşağı doğru çektirince hepsi aynı oluyor

="PTT KARGO ETİKETİ / kabul tarihi: "&GÜN(BUGÜN())&"."&AY(BUGÜN())&".2016 / "&DOLAYLI("'BARKOD VER MÜŞTERİ LİSTESİ'!A2")&" GR"
="PTT KARGO ETİKETİ / kabul tarihi: "&GÜN(BUGÜN())&"."&AY(BUGÜN())&".2016 / "&DOLAYLI("'BARKOD VER MÜŞTERİ LİSTESİ'!A3")&" GR"
="PTT KARGO ETİKETİ / kabul tarihi: "&GÜN(BUGÜN())&"."&AY(BUGÜN())&".2016 / "&DOLAYLI("'BARKOD VER MÜŞTERİ LİSTESİ'!A4")&" GR"

şeklinde olması için ne yapmam lazım
 
Aşağıdaki formülü 2. satıra yazarsanız A2 olur, Aşağıya kopyaladığınızda A3 olur. YAzacağınız satır ile referans satır arasında fark varsa, örneğin 3. satırdaki formülün A2 olmasını istiyorsanız SATIR() yerine SATIR()-1 olarak kullanmalısınız.

="PTT KARGO ETİKETİ / kabul tarihi: "&GÜN(BUGÜN())&"."&AY(BUGÜN())&".2016 / "&DOLAYLI("'BARKOD VER MÜŞTERİ LİSTESİ'!A"&SATIR())&" GR"
 
Geri
Üst