Onay kutusu Çoğaltma

Katılım
12 Şubat 2014
Mesajlar
206
Excel Vers. ve Dili
office2013
Altın Üyelik Bitiş Tarihi
15-12-2021
Merhaba,

İlk belirtmiş olduğum konuya gerek kalmadı. Teşekkürler.
Ben ekteki şekilde kendimce bişeyler yaptım. Fakat eksiklerim var. Eksiklerim aşağıdaki şekildedir.

-B sütununda tarih bulunmaktadır. C Sütununa isim yazıldığında tarih otomatik olarak gelmektedir. Ama bir gün sonrası bu tarih yine değişecektir. Bu sebeple yarın olduğunda tarihin bugünün tarihi olarak kalmasını istiyorum.
-Diğer konu ise onay kutularını elle manuel çoğaltmak çok uzun sürecektir. Diğer satırlara otomatik nasıl çoğaltırım.

Teşekkürler
 

Ekli dosyalar

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,374
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Aşağıdaki kodları ilgili sayfanın kod bölümüne koplayıp deneyiniz.
C sütununda değişiklik olduğunda B sütununa tarih yazar.
Onay kutularını da D:O sütuna ekler.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, [C:C]) Is Nothing Or Target.Row < 5 Then Exit Sub
    
'http://www.mrexcel.com/forum/excel-questions/180887-add-checkboxes-through-visual-basic-applications-code.html
    Dim Rng         As Range
    Dim ToRow       As Long
    Dim MyLeft      As Double
    Dim MyTop       As Double
    Dim MyHeight    As Double
    Dim MyWidth     As Double
    '--------------------------
    Application.ScreenUpdating = False
    
    If Target.Value = "" Then Exit Sub
    Target.Offset(0, -1) = Date
    
    For Each Rng In Range("D" & Target.Row & ":O" & Target.Row)
        'If Not IsEmpty(Cells(ToRow, "D")) Then
        '-
            MyLeft = Rng.Left
            MyTop = Rng.Top
            MyHeight = Rng.Height
    '        MyWidth = Rng.Width
            MyWidth = MyHeight = Rng.Width
            
            ActiveSheet.CheckBoxes.Add(MyLeft, MyTop, MyWidth, MyHeight).Select
            With Selection
                .Caption = ""
                .Value = xlOff
                .LinkedCell = Rng.Address
                .Display3DShading = False
            End With
        ' End If
    Next Rng
    
    Application.ScreenUpdating = True

End Sub
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,374
Excel Vers. ve Dili
Ofis 365 Türkçe
Rica ederim, güle güle kullanınız.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,374
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

İlk verdiğim kodlara ek yaptım.

C sütununda hücre silindiğinde onay kutuları da silinir.
Ayrıca sıra numarasını vermesini de sağladım.

Artık hangisini kullanırsanız.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, [C:C]) Is Nothing Or Target.Row < 5 Or Selection.Count > 1 Then Exit Sub
    
'http://www.mrexcel.com/forum/excel-questions/180887-add-checkboxes-through-visual-basic-applications-code.html
    Dim Rng         As Range
    Dim ToRow       As Long
    Dim MyLeft      As Double
    Dim MyTop       As Double
    Dim MyHeight    As Double
    Dim MyWidth     As Double
    Dim oShape      As Shape

    '--------------------------
    Application.ScreenUpdating = False
    
    If Target.Value = "" Then
 
        For Each oShape In ActiveSheet.Shapes
            If Not Application.Intersect(oShape.TopLeftCell, ActiveSheet.Range("D" & Target.Row & ":O" & Target.Row)) Is Nothing Then oShape.Delete
        Next
        
        Range("A" & Target.Row & ":B" & Target.Row).ClearContents
        Range("D" & Target.Row & ":O" & Target.Row).ClearContents
        
    End If
    
    Target.Offset(0, -1) = Date
    Target.Offset(0, -2) = Target.Row - 4
    
    '---- Daha önceki checkboxları siler
    Range("D" & Target.Row & ":O" & Target.Row).ClearContents
    For Each oShape In ActiveSheet.Shapes
        If Not Application.Intersect(oShape.TopLeftCell, ActiveSheet.Range("D" & Target.Row & ":O" & Target.Row)) Is Nothing Then oShape.Delete
    Next
    '---- Daha önceki checkboxları silindi
    
    For Each Rng In Range("D" & Target.Row & ":O" & Target.Row)
        'If Not IsEmpty(Cells(ToRow, "D")) Then
        '-
            MyLeft = Rng.Left
            MyTop = Rng.Top
            MyHeight = Rng.Height
    '        MyWidth = Rng.Width
            MyWidth = MyHeight = Rng.Width
            
            ActiveSheet.CheckBoxes.Add(MyLeft, MyTop, MyWidth, MyHeight).Select
            With Selection
                .Caption = ""
                .Value = xlOff
                .LinkedCell = Rng.Address
                .Display3DShading = False
            End With
        ' End If
    Next Rng
    
    Application.ScreenUpdating = True

End Sub
 
Üst