Option Explicit
Public Property Get WSData() As Worksheet: Set WSData = Sheets("ورقة1")
End Property
Public Property Get WSDest() As Worksheet: Set WSDest = Sheets("ورقة2")
End Property
'***' اظافة مربعات الاختيار عند التحقق من وجود قيمة في عمود الاسم
Sub Add_CheckBoxes()
Dim cell, col As Single, Cpt As CheckBox
Dim MyLeft, MyTop, MyHeight, MyWidth As Double
Application.ScreenUpdating = False
col = WSData.Range("B" & Rows.Count).End(xlUp).Row
WSData.CheckBoxes.Delete
For cell = 2 To col
If WSData.Cells(cell, "B").Value <> "" Then
MyLeft = Cells(cell, "A").Left: MyTop = Cells(cell, "A").Top
MyHeight = Cells(cell, "A").Height: MyWidth = Cells(cell, "A").Width
WSData.CheckBoxes.Add(MyLeft, MyTop, MyWidth, MyHeight).Select
With Selection
.Caption = "": .Value = xlOff: .Display3DShading = False
End With
[A1].Select
End If
Next cell
Application.ScreenUpdating = True
End Sub
'**** نسخ الاعمدة المحددة
Sub CopyRows()
Dim derlig&, r&, Lr&, Cpt As CheckBox
For Each Cpt In WSData.CheckBoxes
If Cpt.Value = 1 Then
For r = 1 To Rows.Count
If Cells(r, 1).Top = Cpt.Top Then
With WSDest
.Range("A2:A" & Rows.Count).ClearContents
Lr = .Range("B" & Rows.Count).End(xlUp).Row + 1
' عمود الاسم
.Range("B" & Lr) = _
WSData.Range("B" & r).Value
'في حالة الرغبة بنسخ عدة اعمدة قم بظبط السطر التالي بما يناسبك
' .Range("B" & Lr & ":F" & Lr) = _
' WSData.Range("B" & r & ":F" & r).Value
'**** تسلسل البيانات المنسوخة
derlig = WSDest.Range("B" & WSDest.Rows.Count).End(xlUp).Row
WSDest.Range("A2").Value = 1
WSDest.Range("A2:A" & derlig).DataSeries , xlDataSeriesLinear
End With
Exit For
End If
Next r
End If
Next
On Error Resume Next
WSData.CheckBoxes.Value = False
On Error GoTo 0
End Sub
Microsoft Excel Worksheet جديد (2).xlsm