Sub tach()
Dim i As Byte, j As Byte, k As Byte
For i = 10 To Sheet1.[B6000].End(xlUp).Row
j = j + ((i Mod 2) = 0) * (i > 11)
k = i - 9 - (i Mod 2) + j * 2
Sheet2.Cells(k + 3, (i Mod 2) * 2 + 1) = Left(tachten(Sheet1.Cells(i, "B"), " "), Len(tachten(Sheet1.Cells(i, "B"), " ")) - 12)
Sheet2.Cells(k + 4, (i Mod 2) * 2 + 1) = IIf(tachten(Sheet1.Cells(i, "B"), " ", 3) = " ", "", ChrW(208) & "T: " & tachten(Sheet1.Cells(i, "B"), " ", 3))
Sheet2.Cells(k + 5, (i Mod 2) * 2 + 1) = IIf(tachten(Sheet1.Cells(i, "B"), " ", 2) = " ", "", ChrW(208) & "C: " & tachten(Sheet1.Cells(i, "B"), " ", 2))
Sheet2.Cells(k + 3, (i Mod 2) * 2 + 1).Font.Bold = True
With Sheet2.Cells(k + 3, (i Mod 2) * 2 + 1).Resize(3)
.Borders(7).Weight = 2
.Borders(8).Weight = 2
.Borders(9).Weight = 2
.Borders(10).Weight = 2
End With
Next
End Sub
Function tachten(str As String, Optional Tst As String = ", ", Optional luot As Byte = 1) As String
On Error GoTo Loi
tachten = Split(str, Tst)(luot - 1)
Exit Function
Loi:
tachten = " "
End Function
Application.Rept(" ", 10)
space(10)
Lưu ý: Chuổi trong file của tác giả có ký tự đặc biệt: CHAR(160)Em không biết tại sao dùng vào thì nó lổi nên em không dùng được?
Bác thử kiểm tra xem!?
Thân.
Function tachten(str As String, Optional Tst As String = ", ", Optional luot As Byte = 1) As String
On Error GoTo Loi
tachten = Split(str, Tst)(luot - 1)
Exit Function
Loi:
tachten = " "
End Function
With Sheet2.Cells(k + 3, (i Mod 2) * 2 + 1).Resize(3)
.Borders(7).Weight = 2
.Borders(8).Weight = 2
.Borders(9).Weight = 2
.Borders(10).Weight = 2
End With
Ah... ĐượcCó 1 chổ em không tâm đắt nhất! Là chổ này!
Tại sao lại phải lặp lại quá nhiều lần dòng lệnh này nhỉ? Vậy có cách nào không dùng For mà vẫn nạp được 4 thằng này thành 1 không nhỉ?Mã:With Sheet2.Cells(k + 3, (i Mod 2) * 2 + 1).Resize(3) .Borders(7).Weight = 2 .Borders(8).Weight = 2 .Borders(9).Weight = 2 .Borders(10).Weight = 2 End With
Tất nhiên là chỉ dùng 1-2 dòng code thôi.
Thân.
With Sheet2.Cells(k + 3, (i Mod 2) * 2 + 1).Resize(3)
.BorderAround Weight:= 2
End With
With Sheet2.Cells(k + 3, (i Mod 2) * 2 + 1).Resize(3)
.BorderAround LineStyle:=7
End With
Sub thu()
Dim DS As Range
Set DS = [A4].CurrentRegion
DS.Select
[FONT=Courier New][COLOR=#0000bb]Application[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]SendKeys [/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"^+7^+.^+,^+7"[/COLOR][COLOR=#007700])[/COLOR][/FONT]
End Sub
Tôi thử thấy chạy bình thường màSao đoạn code này không hoạt động nhỉ?Mã:Sub thu() Dim DS As Range Set DS = [A4].CurrentRegion DS.Select [FONT=Courier New][COLOR=#0000bb]Application[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]SendKeys [/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"^+7^+.^+,^+7"[/COLOR][COLOR=#007700])[/COLOR][/FONT] End Sub
Thân.
Sub Thu1()
With [A4].CurrentRegion
.Borders.LineStyle = 7
End With
End Sub
Thử bằng tay coi thế nào:Không! Máy em nó im re àh? Chỉ dừng lại việc quét chọn thôi! Còn dòng Sendkey thì không thấy hiện tượng gì hết?
Chả hiểu nổi hàm Sendkey này nữa?!
Có vẻ như nó xử lý chậm hơn code VBA thì phải?
Thân.
Ah... là bạn kẽ đường bao (không kẽ ở giữa)Chỉ cần Ctrl + Shift + 7 thôi là được rồi!
Nhưng cái lý là nó không chịu chạy kia!
Thân.
With Sheet2.Cells(k + 3, (i Mod 2) * 2 + 1).Resize(3)
.BorderAround Weight:= 2
End With
Không có! Em thử nó trên 1 sub riêng mà!Ah... là bạn kẽ đường bao (không kẽ ở giữa)
Chắc tại có qua vòng lập nên nó "ba trợn" chăng?
Thôi thì dùng cái này cho rồi:
Rắc rối chi với SendKeysPHP:With Sheet2.Cells(k + 3, (i Mod 2) * 2 + 1).Resize(3) .BorderAround Weight:= 2 End With
Sub thu()
Dim DS As Range
Set DS = [A4].CurrentRegion
DS.Select
Application.SendKeys ("^+7")
End Sub
Sao em ko chạy đc Mc tách dữ liệu Sh2 đc ahMã:Sub tach() Dim i As Byte, j As Byte, k As Byte For i = 10 To Sheet1.[B6000].End(xlUp).Row j = j + ((i Mod 2) = 0) * (i > 11) k = i - 9 - (i Mod 2) + j * 2 Sheet2.Cells(k + 3, (i Mod 2) * 2 + 1) = Left(tachten(Sheet1.Cells(i, "B"), " "), Len(tachten(Sheet1.Cells(i, "B"), " ")) - 12) Sheet2.Cells(k + 4, (i Mod 2) * 2 + 1) = IIf(tachten(Sheet1.Cells(i, "B"), " ", 3) = " ", "", ChrW(208) & "T: " & tachten(Sheet1.Cells(i, "B"), " ", 3)) Sheet2.Cells(k + 5, (i Mod 2) * 2 + 1) = IIf(tachten(Sheet1.Cells(i, "B"), " ", 2) = " ", "", ChrW(208) & "C: " & tachten(Sheet1.Cells(i, "B"), " ", 2)) Sheet2.Cells(k + 3, (i Mod 2) * 2 + 1).Font.Bold = True With Sheet2.Cells(k + 3, (i Mod 2) * 2 + 1).Resize(3) .Borders(7).Weight = 2 .Borders(8).Weight = 2 .Borders(9).Weight = 2 .Borders(10).Weight = 2 End With Next End Sub Function tachten(str As String, Optional Tst As String = ", ", Optional luot As Byte = 1) As String On Error GoTo Loi tachten = Split(str, Tst)(luot - 1) Exit Function Loi: tachten = " " End Function
Bạn xem file nha!
Thân.
Khổ cái là mọi thứ vẫn bình thường mới chết chứKhông chạy được có thể là do bạn đang High Macro rồi.
.