Trong ThisWorkbook bạn đặt code như sau :Các bác cho em hỏi có thể làm cách nào lập trình được nếu ta click đúp chuột vào một cột thì cột đó sẽ nhảy sang sheet khác và các cột còn lại thì tự động di chuyển vào gần nhau không?
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Not Target.EntireColumn.Find("*") Is Nothing Then usfOption.Show
End Sub
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub cmdOK_Click()
Dim Scolumn As Variant
If ComboBox1 = "" Or ComboBox2 = "" Then
MsgBox "Du lieu khong hop le."
ComboBox1.SetFocus
Else
With ActiveCell.EntireColumn
Scolumn = .Value
.Delete Shift:=xlToLeft
Sheets(ComboBox1.Value).Select
Cells(1, ComboBox2).EntireColumn.Value = Scolumn
Unload Me
End With
End If
End Sub
Private Sub UserForm_Activate()
Dim i As Long, Sh As Worksheet
For Each Sh In Worksheets
ComboBox1.AddItem Sh.Name
Next
For i = 1 To 256
ComboBox2.AddItem i
Next i
cmdOK.SetFocus
End Sub
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Columns("N:N")) Is Nothing Then
Sheets("S3").Columns("N:N").Value = Columns("N:N").Value
Columns("N:N").Delete
End If
End Sub
Vấn đề mà tác giả chưa nói rõ nằm ở chổ:Các bác cho em hỏi có thể làm cách nào lập trình được nếu ta click đúp chuột vào một cột thì cột đó sẽ nhảy sang sheet khác và các cột còn lại thì tự động di chuyển vào gần nhau không?
Và nếu là "chèn thêm" thì có nhiều chuyện phải xem xét ---> Chẳng hạn cột cuối đã có chưa? Liệu có chắc là "chèn" được không (đối với các cell bị merge)Các khả năng xảy ra:
1. Khi dịch chuyển sang sheet khác, nó sẽ chèn thêm hay chép đè dữ liệu hiện thời
2. Vị trí cần chép đến là gì?
Nên tạo form và cho chọn lựa sheet đến, cột nào, cách dán (chèn, xóa...)
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub cmdOK_Click()
On error resume next
Dim Scolumn As Variant
If ComboBox1 = "" Or ComboBox2 = "" Or ComboBox3 = "" Then
MsgBox "Du lieu khong hop le."
ComboBox1.SetFocus
Else
With ActiveCell.EntireColumn
Scolumn = .Value
.Delete Shift:=xlToLeft
Sheets(ComboBox1.Value).Select
Select Case ComboBox3
Case "New column"
Cells(1, ComboBox2).EntireColumn.Insert Shift:=xlToRight
Cells(1, ComboBox2).EntireColumn.Value = Scolumn
Case "Replace data"
Cells(1, ComboBox2).EntireColumn.Value = Scolumn
End Select
Unload Me
End With
End If
End Sub
Private Sub UserForm_Activate()
Dim i As Long, Sh As Worksheet
For Each Sh In Worksheets
ComboBox1.AddItem Sh.Name
Next
For i = 1 To 256
ComboBox2.AddItem i
Next i
cmdOK.SetFocus
ComboBox3.AddItem "New column"
ComboBox3.AddItem "Replace data"
End Sub