Bùi Thúy Thúy
Thành viên thường trực
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
- Tham gia
- 2/7/18
- Bài viết
- 289
- Được thích
- 38
đó là bạn em, với lại như vậy phức tạp, E quay về cái cũ hiSao em hoang mang quá vậy. Đọc kỹ lại thì bài 25 không phải là yêu cầu của chủ Topic
Chị ơi cái code này thay đổi vùng kiểm tra thì vào phần nào trong code ạ!Anh @ befaint ới em đã viết được cái Code kinh khủng này. Nhìn thấy khiếp quá đi
PHP:Option Explicit Sub Kiemtra() Dim Arr, J As Long, Dongcuoi As Long Dim SRng As Range, eRng As Range, Cll As Range Arr = Array(15, 16, 18, 19, 21, 22, 24, 25) Dongcuoi = Range("A" & Rows.Count).End(xlUp).Row For J = LBound(Arr) To UBound(Arr) Set SRng = Range(Cells(9, Arr(J)), Cells(Dongcuoi, Arr(J))) Select Case Arr(J) Case 15, 18, 21, 24 To 25 Kiemtrangay SRng Case 16, 19, 22 Kiemtragio SRng End Select Next J End Sub Sub Kiemtrangay(ByVal SRng As Range) Dim Rng As Range, Cll As Range Dim fYear As Long, eYear As Long fYear = Year(Now()) - 4: eYear = Year(Now()) + 1 SRng.Interior.Pattern = xlNone SRng.Font.Strikethrough = False For Each Cll In SRng If IsError(Cll) Then GoTo Tiep If Cll <> Empty And Not IsDate(Cll) Then GoTo Tiep If Cll <> Empty Then If Year(Cll) <= fYear Then If Year(Cll) <= eYear Then Tiep: If Rng Is Nothing Then Set Rng = Cll Else Set Rng = Union(Rng, Cll) End If End If End If End If Next If Not Rng Is Nothing Then Rng.Interior.Color = 7988676 Rng.Font.Strikethrough = True End If End Sub Sub Kiemtragio(ByVal SRng As Range) Dim Rng As Range, Cll As Range, DK As Boolean Dim aTmp, TmpBD, TmpKT, J As Long Dim GioBD As Double, GioKT As Double, FGio As Double, EGio As Double Dim sTimeAm As Double, eTimeAM As Double, sTimePM As Double, eTimePM As Double sTimeAm = 7 + 30 / 60: eTimeAM = 11 + 30 / 60 sTimePM = 13 + 30 / 60: eTimePM = 17 SRng.Interior.Pattern = xlNone SRng.Font.Strikethrough = False For Each Cll In SRng DK = False If IsError(Cll) Then DK = True: GoTo Tiep End If If Cll <> Empty Then aTmp = Split(Cll, "-") If UBound(aTmp) < 1 Then DK = True: GoTo Tiep Else TmpBD = Split(aTmp(0), "h") TmpKT = Split(aTmp(1), "h") '----------------------------------------------- If UBound(TmpBD) >= 1 Then GioBD = CLng(TmpBD(0)) + CLng(TmpBD(1)) / 60 '++++++++++++++++++++++++ If GioBD < eTimeAM Then FGio = sTimeAm: EGio = eTimeAM Else FGio = sTimePM: EGio = eTimePM End If '+++++++++++++++++++++++++ If GioBD < FGio Then DK = True: GoTo Tiep End If Else DK = True: GoTo Tiep End If '--------------------------------------------------- If UBound(TmpKT) >= 1 Then GioKT = CLng(TmpKT(0)) + CLng(TmpKT(1)) / 60 If GioKT > EGio Then DK = True: GoTo Tiep End If Else DK = True: GoTo Tiep End If '------------------------------------------ If GioKT - GioBD <= 0 Then DK = True: GoTo Tiep End If End If End If Tiep: If DK = True Then If Rng Is Nothing Then Set Rng = Cll Else Set Rng = Union(Rng, Cll) End If End If Next If Not Rng Is Nothing Then Rng.Interior.Color = 13434879 Rng.Font.Strikethrough = True End If End Sub
@Bùi Thúy Thúy Test thử xem có cái gì nó không ưng cái bụng không nha![]()
Vầy nha. Mình khai báo cái Arr = Array(15, 16, 18, 19, 21, 22, 24, 25) là mảng chứa số cột của bảng tính cấn kiểm traChị ơi cái code này thay đổi vùng kiểm tra thì vào phần nào trong code ạ!
Vâng cám ơn chị, chị giúp E chút xíu nữa là sửa lại code ở bài #4 để e có thể tô màu được không ạ! E sẽ sử dụng code ở bài #4 đó, chúc chị ngày mới vui vẻ!Vầy nha. Mình khai báo cái Arr = Array(15, 16, 18, 19, 21, 22, 24, 25) là mảng chứa số cột của bảng tính cấn kiểm tra
Trong câu lệnh
Select Case Arr(J)
Case 15, 18, 21, 24 To 25 --->Nếu số côt trong bảng tính là 15,18,21, 24, 25 thì chạy Macro Kiemtrangay
Kiemtrangay SRng
Case 16, 19, 22
Kiemtragio SRng --->Nếu số côt trong bảng tính là 16,19,22 thì chạy Macro Kiemtragio
End Select
Bê cái Code bài 25 vào thôi nhaVâng cám ơn chị, chị giúp E chút xíu nữa là sửa lại code ở bài #4 để e có thể tô màu được không ạ! E sẽ sử dụng code ở bài #4 đó, chúc chị ngày mới vui vẻ!
Sub BoiMau()
Dim SRng As Range
On Error GoTo Thoat
Set SRng = Application.InputBox(Prompt:="Chon vung du lieu ", Title:="Du lieu dau vao", Type:=8)
Kiemtrangay SRng
Thoat:
End Sub
Sub Kiemtrangay(ByVal SRng As Range)
Dim Rng As Range, Cll As Range
Dim fYear As Long, eYear As Long
fYear = Year(Now()) - 5: eYear = Year(Now()) + 1
SRng.Interior.Pattern = xlNone
SRng.Font.Strikethrough = False
For Each Cll In SRng
If IsError(Cll) Then GoTo Tiep
If Cll <> Empty And Not IsDate(Cll) Then GoTo Tiep
If Cll <> Empty Then
If Year(Cll) <= fYear Then
If Year(Cll) <= eYear Then
Tiep:
If Rng Is Nothing Then
Set Rng = Cll
Else
Set Rng = Union(Rng, Cll)
End If
End If
End If
End If
Next
If Not Rng Is Nothing Then
Rng.Interior.Color = 7988676
Rng.Font.Strikethrough = True
End If
End Sub
Chỉ là "Khó" thôi, chứ không fải là không thay đổi; Ví dụ bạn có thể tìm các ô trong vùng cột có kí tự "-" thì tách ra bỡi hàm nào đó thành 2 cột; Chuyện này không thể dính dáng hay đổ thừa cho fần mền được, 1 khi chưa có fần mềm mới thay thếE làm theo phần mềm định dạng sẵn như vậy nên khó thay đổi Thầy ạ!,
Vâng E cám ơn Thầy ạ!Chỉ là "Khó" thôi, chứ không fải là không thay đổi; Ví dụ bạn có thể tìm các ô trong vùng cột có kí tự "-" thì tách ra bỡi hàm nào đó thành 2 cột; Chuyện này không thể dính dáng hay đổ thừa cho fần mền được, 1 khi chưa có fần mềm mới thay thế
Vâng, E cám ơn Chị nhiều nhé! chúc chị cuối tuần vui vẻ và may mắn!Bê cái Code bài 25 vào thôi nha
Mã:Sub BoiMau() Dim SRng As Range On Error GoTo Thoat Set SRng = Application.InputBox(Prompt:="Chon vung du lieu ", Title:="Du lieu dau vao", Type:=8) Kiemtrangay SRng Thoat: End Sub Sub Kiemtrangay(ByVal SRng As Range) Dim Rng As Range, Cll As Range Dim fYear As Long, eYear As Long fYear = Year(Now()) - 5: eYear = Year(Now()) + 1 SRng.Interior.Pattern = xlNone SRng.Font.Strikethrough = False For Each Cll In SRng If IsError(Cll) Then GoTo Tiep If Cll <> Empty And Not IsDate(Cll) Then GoTo Tiep If Cll <> Empty Then If Year(Cll) <= fYear Then If Year(Cll) <= eYear Then Tiep: If Rng Is Nothing Then Set Rng = Cll Else Set Rng = Union(Rng, Cll) End If End If End If End If Next If Not Rng Is Nothing Then Rng.Interior.Color = 7988676 Rng.Font.Strikethrough = True End If End Sub
Hi, làm phiền chị xinh gái chút nữa:Bê cái Code bài 25 vào thôi nha
Mã:Sub BoiMau() Dim SRng As Range On Error GoTo Thoat Set SRng = Application.InputBox(Prompt:="Chon vung du lieu ", Title:="Du lieu dau vao", Type:=8) Kiemtrangay SRng Thoat: End Sub Sub Kiemtrangay(ByVal SRng As Range) Dim Rng As Range, Cll As Range Dim fYear As Long, eYear As Long fYear = Year(Now()) - 5: eYear = Year(Now()) + 1 SRng.Interior.Pattern = xlNone SRng.Font.Strikethrough = False For Each Cll In SRng If IsError(Cll) Then GoTo Tiep If Cll <> Empty And Not IsDate(Cll) Then GoTo Tiep If Cll <> Empty Then If Year(Cll) <= fYear Then If Year(Cll) <= eYear Then Tiep: If Rng Is Nothing Then Set Rng = Cll Else Set Rng = Union(Rng, Cll) End If End If End If End If Next If Not Rng Is Nothing Then Rng.Interior.Color = 7988676 Rng.Font.Strikethrough = True End If End Sub
Cứ "một chút xíu" mà gần 50 bài rồi vẫn chưa có dấu hiệu kết thúc.
Bài 44 lại nhờ sửa lại code bài 4 để dùng. Hay là nhờ mod xóa từ bài 5 đến 43 cho gọn nhỉ? Thấy tốn kém quá.
Như bài 1 mà Anh hiCứ "một chút xíu" mà gần 50 bài rồi vẫn chưa có dấu hiệu kết thúc.
Bài 44 lại nhờ sửa lại code bài 4 để dùng. Hay là nhờ mod xóa từ bài 5 đến 43 cho gọn nhỉ? Thấy tốn kém quá.
Bỏ dòng Rng.Font.Strikethrough = True là được xơi cà rốt rùiHi, gần được chị ạ! ô màu xanh vẫn bị gạch chị ạ! E nhờ chị sửa vậy để còn sửa lại được dữ liệu tô màu e có thể sửa lại được nhưng dữ liệu bị gạch k sửa được chị ạ!
E cám ơn Chị nhiều!
View attachment 200690
Khổ thân. Đáng nhẽ ăn được rồi mà người ta lại không cho ăn. Số mình đen thếĐây chị ơi gần ăn được ạ!
Hình 1: là bỏ là bỏ
Hình 2: là kết quả
View attachment 200692View attachment 200693
Chắc nốt lần này nữa là ăn được chị nhỉ hi..
cám ơn chị đã ok, chúc chị buổi tối vui vẻKhổ thân. Đáng nhẽ ăn được rồi mà người ta lại không cho ăn. Số mình đen thế