Hücre değerine bağlı userform

Katılım
27 Mayıs 2015
Mesajlar
6
Excel Vers. ve Dili
türkçe excell 2007-2010

sayfa1

    

sayfa 2

   

a

b

ddl

d

 

a

b

 

d

c

e

ddl

f

 

c

e

 

f

x

y

accpt

z

 

f

t

 

k

f

t

ddl

k

     
         
         
         


Misal elimizde yukarıdaki gibi 2 farklı sayfa var aynı çalışma kitabı içerisinde. 1 sayfa da 3. sutuna ddl yazıldığı zaman 2.sayfada kayıt açıp 1.sayfadaki verileri 2.sayfaya eklesin. sayfa 2yi doldurmak için form yapsam bu form 1.sayfadaki ddl metnini görünce çalışıp 2.sayfaya veri eklemeli.

bu sorunu nasıl çözebilirim?
 

AdemCan

Altın Üye
Destek Ekibi
Katılım
1 Eylül 2008
Mesajlar
1,362
Excel Vers. ve Dili
2019 TR
Merhaba, sayfa1 kod bölümüne ekleyin, 3. sütuna dll yazdığınız zaman kod çalışır.
Kayıtların eksiksiz aktarılması için en son 3. sütuna veri girmeniz gerekir.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Count > 1 Then Exit Sub
    If Target.Column = 3 And Target.Value = "dll" Then
        Dim s2 As Worksheet, son As Long, r As Long
        Set s2 = Sayfa2
        r = Target.Row
        With s2
            son = .Cells(Rows.Count, 1).End(3).Row + 1
            .Cells(son, 1) = Cells(r, 1)
            .Cells(son, 2) = Cells(r, 2)
            .Cells(son, 3) = Cells(r, 4)
        End With
    End If
End Sub
 
Katılım
27 Mayıs 2015
Mesajlar
6
Excel Vers. ve Dili
türkçe excell 2007-2010
Merhaba, sayfa1 kod bölümüne ekleyin, 3. sütuna dll yazdığınız zaman kod çalışır.
Kayıtların eksiksiz aktarılması için en son 3. sütuna veri girmeniz gerekir.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Count > 1 Then Exit Sub
    If Target.Column = 3 And Target.Value = "dll" Then
        Dim s2 As Worksheet, son As Long, r As Long
        Set s2 = Sayfa2
        r = Target.Row
        With s2
            son = .Cells(Rows.Count, 1).End(3).Row + 1
            .Cells(son, 1) = Cells(r, 1)
            .Cells(son, 2) = Cells(r, 2)
            .Cells(son, 3) = Cells(r, 4)
        End With
    End If
End Sub

Üstad şöyle bir kod ile sorunu çözdüm fakat, başka bir sorun var. Bu kod LOG sayfasında A2:Z2 ye kadar olan sutun başlığı ile DDL sayfasındaki başlıkları eşleştirip A2:K2 arasına yazdırıyor, LOG sayfasında 15.sutunda DDL içeren metin görünce benzer olan başlık altına DDL yazan satırdaki verileri kopyalıyor. Burda sorun yok. Benim log sayfası a2:z2 ye kadar başlık içeriyor. DDL sayfası ise a2:k2 ye kadar log sayfasındaki aynı başlıkları içeriyor. Diyelimki DDL sayfasında aktarılan verinin en sonuna birşeyler ekledim, yani k2 den sonra bir kaç sutun daha ekledim log sayfasında olmayan.. sonra Log sayfasına aktarılmak üzere yeni bir veri girdiğinde tekrar DDL e çek dediğimde yine aynı şekilde tüm verileri silip eklenen satırla birlkte öncekiler yeniden kopyalıyor. Buda benim ddl sayfasındaki eklediğim sutunlara yazdıgım bilgileride siliyor. Bu makroyu, DDL sayfasına aktarılan veri satırında işlem yapıldıysa, LOG sayfasından yeni veri çekileceği zaman bir önceki verilere dokunmadan farklı olan veriyi nasıl aktarabiliriz?


Sub DDL_aktar()
Set logd = Sheets("LOG")
Set sayfa = Sheets("DDL")
son = WorksheetFunction.CountA(logd.Range("B1:B65536")) + 2
sayfa.Range("A3:R65536").ClearContents
For i = 3 To son
Set ara = logd.Cells(i, 15).Find("*DDL*")
If Not ara Is Nothing Then
son = WorksheetFunction.CountA(sayfa.Range("A1:A65536")) + 2
For Each logd_baslik In logd.Range("A2:Z2")
For Each sayfa_baslik In sayfa.Range("A2:K2")
If logd_baslik = sayfa_baslik Then
sayfa.Cells(son, sayfa_baslik.Column) = logd.Cells(i, logd_baslik.Column)
End If
Next sayfa_baslik
Next logd_baslik
End If
Next i
End Sub
 
Üst