DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Günaydın ekteki örnekte c5:c7 hücrelerindeki verilerin aynısını c14:c16 hücrelerine nasıl yazdırabiliriz?
Merhaba,Sayın Nejdet bey CheckBox'u seçtiğimiz zaman otamatik olarak ilgili hücrelerdeki verilerin otamatik olarak kopyalanmasını demiştim
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then Range("C5:C7").Copy Range("C14")
End Sub
Neden olmasın, onu da yaparsınız diye düşünüyorum. Yapamazsanız şöyle olacak :Sayın Necdet bey çok teşekkür ederim.Acaba işareti kaldırdığımız zaman kopyalanan veriler silinebilir mi?
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
Range("C5:C7").Copy Range("C14")
Else
Range("C14:C16").ClearContents
End If
End Sub
Necdet bey bir çalışma yapıyordum araştırma yaparken bu kod gördüm benimde işime yaradı teşekkür ederim.Neden olmasın, onu da yaparsınız diye düşünüyorum. Yapamazsanız şöyle olacak :
Kod:Private Sub CheckBox1_Click() If CheckBox1.Value = True Then Range("C5:C7").Copy Range("C14") Else Range("C14:C16").ClearContents End If End Sub
Tabii bunu ilk soruda sorsaydınız fazladan yazışmalara neden olunmazdı.
Private Sub Worksheet_Change(ByVal Target As Range)
'Kodlar ChatGPT den
Dim chkBox As CheckBox
Dim cell As Range
Dim chkBoxName As String
' Sadece B sütununda veri girildiğinde işlemi başlat
If Not Intersect(Target, Me.Columns("B")) Is Nothing And Target.Row > 1 Then
' Hedef aralıktaki her hücre için
For Each cell In Target
' Eğer hücre boş değilse
If cell.Value <> "" Then
' CheckBox'un adını satır numarasına göre belirle
chkBoxName = "chkBox_" & cell.Row
' Eğer o satırda CheckBox yoksa ekle
On Error Resume Next
Set chkBox = Me.CheckBoxes(chkBoxName)
On Error GoTo 0
If chkBox Is Nothing Then
' CheckBox ekleyelim ve hücrenin A sütununa yerleştirelim
Set chkBox = Me.CheckBoxes.Add(cell.Offset(0, -1).Left, cell.Offset(0, -1).Top, cell.Offset(0, -1).Width, cell.Offset(0, -1).Height)
With chkBox
.Caption = "" ' Checkbox üzerindeki yazıyı kaldır
.LinkedCell = cell.Offset(0, -1).Address ' Checkbox durumunu A hücresine bağla
.Name = chkBoxName ' Checkbox ismini satır numarasına göre ver
.OnAction = "CheckBoxClicked" ' CheckBox'a makro atama
End With
End If
' Temizleme
Set chkBox = Nothing
End If
Next cell
End If
End Sub
Sub CheckBoxClicked()
'ChatGPT kodları
Dim chkBoxName As String
Dim chkBox As CheckBox
Dim chkState As String
Dim r As Long
' Tıklanan CheckBox'ın adını almak
chkBoxName = Application.Caller
' Tıklanan CheckBox'ı Set etmek
Set chkBox = ActiveSheet.CheckBoxes(chkBoxName)
' CheckBox'ın durumunu öğrenmek
If chkBox.Value = xlOn Then
chkState = "Açık"
Else
chkState = "Kapalı"
End If
' Mesaj kutusunda CheckBox'ın adını ve durumunu göster
' MsgBox "Tıklanan CheckBox: " & chkBoxName & vbCrLf & "Durumu: " & chkState
r = CLng(Split(chkBoxName, "_")(1)) 'Tıklanan CheckBoxın adından numarasını/satır no öğrenmek
If chkState = "Açık" Then
Liste_Sayfasina_Aktar r
ElseIf chkState = "Kapalı" Then
Liste_Sayfasindan_Sil r
End If
End Sub
Public Sub Liste_Sayfasina_Aktar(ByRef r As Long)
Dim lr As Long
lr = Sayfa2.Cells(Rows.Count, "B").End(3).Row + 1
Sayfa1.Range("A" & r & ":G" & r).Copy Sayfa2.Range("A" & lr)
End Sub
Public Sub Liste_Sayfasindan_Sil(ByRef r As Long)
Dim lr As Long
Dim c As Range
Dim evt As String
Set c = Sayfa2.Range("C:C").Find(Sayfa1.Range("C" & r), LookIn:=xlValues)
If Not c Is Nothing Then
lr = c.Row
evt = MsgBox("Liste Sayfasında " & c.Row & ". SATIRI SİLİNECEK, EMİN MİSİNİZ?", vbYesNo)
If evt = vbYes Then
Sayfa2.Rows(c.Row).Delete
MsgBox "Liste Sayfasındaki " & lr & " satırı silinmiştir...."
Else
MsgBox "SİLMEKTEN VAZGEÇTİNİZ....."
End If
End If
End Sub
Necdet bey süpersiniz valla teşekkür ederimMerhaba,
Son günlerde çok tembelim, pek sık ta gelmiyorum foruma. O yüzden kodların çoğunu ben CHATGPT'ye yazdırdım.
Aşağıdaki kodları kisiler sayfasının kod bölümüne kopyalayınız.
kisiler sayfasının B sütununda bir değişiklik olduğunda A sütununa CheckBox Ekler.
A sütununu font rengini beyaz yaparsanız checkbox a tıklandığında evet/hayır ları görmezsiniz.
Aşağıdaki kodları da bir modül açarak oraya kopyalayabilirsiniz.Kod:Private Sub Worksheet_Change(ByVal Target As Range) 'Kodlar ChatGPT den Dim chkBox As CheckBox Dim cell As Range Dim chkBoxName As String ' Sadece B sütununda veri girildiğinde işlemi başlat If Not Intersect(Target, Me.Columns("B")) Is Nothing And Target.Row > 1 Then ' Hedef aralıktaki her hücre için For Each cell In Target ' Eğer hücre boş değilse If cell.Value <> "" Then ' CheckBox'un adını satır numarasına göre belirle chkBoxName = "chkBox_" & cell.Row ' Eğer o satırda CheckBox yoksa ekle On Error Resume Next Set chkBox = Me.CheckBoxes(chkBoxName) On Error GoTo 0 If chkBox Is Nothing Then ' CheckBox ekleyelim ve hücrenin A sütununa yerleştirelim Set chkBox = Me.CheckBoxes.Add(cell.Offset(0, -1).Left, cell.Offset(0, -1).Top, cell.Offset(0, -1).Width, cell.Offset(0, -1).Height) With chkBox .Caption = "" ' Checkbox üzerindeki yazıyı kaldır .LinkedCell = cell.Offset(0, -1).Address ' Checkbox durumunu A hücresine bağla .Name = chkBoxName ' Checkbox ismini satır numarasına göre ver .OnAction = "CheckBoxClicked" ' CheckBox'a makro atama End With End If ' Temizleme Set chkBox = Nothing End If Next cell End If End Sub
Kod:Sub CheckBoxClicked() 'ChatGPT kodları Dim chkBoxName As String Dim chkBox As CheckBox Dim chkState As String Dim r As Long ' Tıklanan CheckBox'ın adını almak chkBoxName = Application.Caller ' Tıklanan CheckBox'ı Set etmek Set chkBox = ActiveSheet.CheckBoxes(chkBoxName) ' CheckBox'ın durumunu öğrenmek If chkBox.Value = xlOn Then chkState = "Açık" Else chkState = "Kapalı" End If ' Mesaj kutusunda CheckBox'ın adını ve durumunu göster ' MsgBox "Tıklanan CheckBox: " & chkBoxName & vbCrLf & "Durumu: " & chkState r = CLng(Split(chkBoxName, "_")(1)) 'Tıklanan CheckBoxın adından numarasını/satır no öğrenmek If chkState = "Açık" Then Liste_Sayfasina_Aktar r ElseIf chkState = "Kapalı" Then Liste_Sayfasindan_Sil r End If End Sub Public Sub Liste_Sayfasina_Aktar(ByRef r As Long) Dim lr As Long lr = Sayfa2.Cells(Rows.Count, "B").End(3).Row + 1 Sayfa1.Range("A" & r & ":G" & r).Copy Sayfa2.Range("A" & lr) End Sub Public Sub Liste_Sayfasindan_Sil(ByRef r As Long) Dim lr As Long Dim c As Range Dim evt As String Set c = Sayfa2.Range("C:C").Find(Sayfa1.Range("C" & r), LookIn:=xlValues) If Not c Is Nothing Then lr = c.Row evt = MsgBox("Liste Sayfasında " & c.Row & ". SATIRI SİLİNECEK, EMİN MİSİNİZ?", vbYesNo) If evt = vbYes Then Sayfa2.Rows(c.Row).Delete MsgBox "Liste Sayfasındaki " & lr & " satırı silinmiştir...." Else MsgBox "SİLMEKTEN VAZGEÇTİNİZ....." End If End If End Sub