Sử dụng hàm upper hay lower trong vba

Liên hệ QC
Sao kỳ quá bạn ơi, Mai post lại bài tomaucn nè (sau khi đã gắn macro cho nút lệnh) nhưng tô không đúng bạn ơi.
Như tháng 6/2009 thì các ngày 7,14,21,28 là ngày cn mà nó tô các ngày 7,14,22,29 (sheet To1) còn ở sheet To2 thì tô kỳ quá.
Bạn ơi coi giúp mình với
Lưu ý:
1/ Chữ "Ghi chú" ở cột B
2/ Dưới đó không có dòng nào.
Vậy chắc phải triển khia thêm tìm chữa ghi chú.
Bạn thử copy Chữ "Ghi chú" sang cột B và test lại

Bạn dùng thử code sau, có thể để chữ Ghi chú nằm bất kỳ trong cột A, B, C, D và sau dòng 7.
PHP:
Sub TestCN()
Dim iY As Long, iM As Long, iDate As Date, endR As Long
Dim i As Long, iD As Long
Dim myRng As Range, rngR As Range
ActiveSheet.Select
Set myRng = Range("A7:D1000")
With myRng
Set rngR = .Find(What:="ghi chú", After:=myRng(1), LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
End With
endR = rngR.Row 'dong co chu ghi chu'
'endR = Cells(65000, 2).End(xlUp).Row'
Range([k7], Cells(endR, "AP")).Font.ColorIndex = 0
iY = Year(Range("R1")): iM = Month(Range("R1"))
For i = 0 To 6
  iD = Cells(7, 11 + (2 * i))
  iDate = DateSerial(iY, iM, iD)
  If Weekday(iDate) = 1 Then
    Range(Cells(7, 11 + (2 * i)), Cells(endR, 11 + (2 * i) + 1)).Font.ColorIndex = 3
    Range(Cells(7, 11 + (2 * i) + 14), Cells(endR, 11 + (2 * i) + 1 + 14)).Font.ColorIndex = 3
    Exit For
  End If
Next
Set myRng = Nothing
Set rngR = Nothing

End Sub
 
Lần chỉnh sửa cuối:
Lưu ý:
1/ Chữ "Ghi chú" ở cột B
2/ Dưới đó không có dòng nào.

Bạn ơi, macro chỉ tô màu đúng trong khoảng ngày 1->15 của tháng thôi bạn ạ.
Còn 2 tuần sau thì tô thế nào bạn.
Bạn lưu ý giúp là bảng chấm công được thực hiện 1 tháng 2 lần. Nếu dữ liệu chấm công là từ 1->15 thì những ô từ 16->31 sẽ tô xám và ngược lại: chấm công cho 16->31 thì những ô 1->15 sẽ tô xám. Số ngày trong tháng đều hiện hết và làm thành 2 dòng là vậy đó bạn ạ. Bạn nghiên cứu tiếp giúp Mai với
 
Bạn ơi, macro chỉ tô màu đúng trong khoảng ngày 1->15 của tháng thôi bạn ạ.
Còn 2 tuần sau thì tô thế nào bạn.
Bạn lưu ý giúp là bảng chấm công được thực hiện 1 tháng 2 lần. Nếu dữ liệu chấm công là từ 1->15 thì những ô từ 16->31 sẽ tô xám và ngược lại: chấm công cho 16->31 thì những ô 1->15 sẽ tô xám. Số ngày trong tháng đều hiện hết và làm thành 2 dòng là vậy đó bạn ạ. Bạn nghiên cứu tiếp giúp Mai với

Vậy dùng thử code sau:
PHP:
Sub TestCN()
Dim iY As Long, iM As Long, iDate As Date, endR As Long, iDay As Long
Dim i As Long, iD As Long
Dim myRng As Range, rngR As Range
ActiveSheet.Select
Set myRng = Range("A7:D1000")
With myRng
Set rngR = .Find(What:="ghi chú", After:=myRng(1), LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
End With
endR = rngR.Row 'dong co chu ghi chu'
'endR = Cells(65000, 2).End(xlUp).Row'
Range([k7], Cells(endR, "AP")).Font.ColorIndex = 0
iY = Year(Range("R1")): iM = Month(Range("R1")): iDay = Day(Range("R1"))
For i = 0 To 6
  iD = Cells(7, 11 + (2 * i))
  iDate = DateSerial(iY, iM, iD)
  If Weekday(iDate) = 1 Then
    Range(Cells(9, 11 + (2 * i)), Cells(endR, 11 + (2 * i) + 1)).Font.ColorIndex = 3
    Range(Cells(9, 11 + (2 * i) + 14), Cells(endR, 11 + (2 * i) + 1 + 14)).Font.ColorIndex = 3
    If Cells(7, 11) = iDay Then
      Range(Cells(7, 11 + (2 * i)), Cells(7, 11 + (2 * i) + 1)).Font.ColorIndex = 3
      Range(Cells(7, 11 + (2 * i) + 14), Cells(7, 11 + (2 * i) + 1 + 14)).Font.ColorIndex = 3
    Else
      Range(Cells(8, 11 + (2 * i)), Cells(8, 11 + (2 * i) + 1)).Font.ColorIndex = 3
      Range(Cells(8, 11 + (2 * i) + 14), Cells(8, 11 + (2 * i) + 1 + 14)).Font.ColorIndex = 3
    End If
    Exit For
  End If
Next
Set myRng = Nothing
Set rngR = Nothing

End Sub
Rất vui lòng giúp bạn.
 
Rất vui lòng giúp bạn.

Vẫn không đúng khi Mai thay ngày ở R1= 15/6/2006 và AD6=30/6/2009 thì tô sai bạn ạ.
Nếu đúng thì phải tô là ngày 21, 28 nhưng nó lại tô 22 và 29 bạn ơi.(với tháng khác cũng sai với 2 tuần sau của tháng bạn ạ).
Rất cám ơn bạn đã nhiệt tình chỉ dẫn
 
Vẫn không đúng khi Mai thay ngày ở R1= 15/6/2006 và AD6=30/6/2009 thì tô sai bạn ạ.
Nếu đúng thì phải tô là ngày 21, 28 nhưng nó lại tô 22 và 29 bạn ơi.(với tháng khác cũng sai với 2 tuần sau của tháng bạn ạ).
Rất cám ơn bạn đã nhiệt tình chỉ dẫn
Sorry, do không để ý, cứ nghĩ bước nhảy là 7, 14
Bạn dùng code sau:
PHP:
Sub TestCN()
Dim iY As Long, iM As Long, iDate As Date, endR As Long, iDay As Long
Dim i As Long, iD As Long
Dim myRng As Range, rngR As Range
ActiveSheet.Select
Set myRng = Range("A7:D1000")
With myRng
Set rngR = .Find(What:="ghi chú", After:=myRng(1), LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
End With
endR = rngR.Row 'dong co chu ghi chu'
'endR = Cells(65000, 2).End(xlUp).Row'
Range([k7], Cells(endR, "AP")).Font.ColorIndex = 0
iY = Year(Range("R1")): iM = Month(Range("R1")): iDay = Day(Range("R1"))
For i = 0 To 6
  iD = Cells(7, 11 + (2 * i))
  iDate = DateSerial(iY, iM, iD)
  If Weekday(iDate) = 1 Then
    If Cells(7, 11) = iDay Then
      Range(Cells(9, 11 + (2 * i)), Cells(endR, 11 + (2 * i) + 1)).Font.ColorIndex = 3
      Range(Cells(9, 11 + (2 * i) + 14), Cells(endR, 11 + (2 * i) + 1 + 14)).Font.ColorIndex = 3
      Range(Cells(7, 11 + (2 * i)), Cells(7, 11 + (2 * i) + 1)).Font.ColorIndex = 3
      Range(Cells(7, 11 + (2 * i) + 14), Cells(7, 11 + (2 * i) + 1 + 14)).Font.ColorIndex = 3
    Else
      Range(Cells(9, 9 + (2 * i)), Cells(endR, 9 + (2 * i) + 1)).Font.ColorIndex = 3
      Range(Cells(9, 9 + (2 * i) + 14), Cells(endR, 9 + (2 * i) + 1 + 14)).Font.ColorIndex = 3
      Range(Cells(8, 9 + (2 * i)), Cells(8, 9 + (2 * i) + 1)).Font.ColorIndex = 3
      Range(Cells(8, 9 + (2 * i) + 14), Cells(8, 9 + (2 * i) + 1 + 14)).Font.ColorIndex = 3
    End If
    Exit For
  End If
Next
Set myRng = Nothing
Set rngR = Nothing

End Sub
 
Sorry, do không để ý, cứ nghĩ bước nhảy là 7, 14

Bạn ơi Mai test đối với tháng có 31 ngày (2 tuần cuối tháng) mới thử 2 tháng là 3 và 5 (16/3/2009-31/3/2009; 16/5/2009-31/5/2009) thì tô bị sót bạn ơi. Mong bạn xem lại giải thuật bài toán. Cám ơn bạn
 
Bạn ơi Mai test đối với tháng có 31 ngày (2 tuần cuối tháng) mới thử 2 tháng là 3 và 5 (16/3/2009-31/3/2009; 16/5/2009-31/5/2009) thì tô bị sót bạn ơi. Mong bạn xem lại giải thuật bài toán. Cám ơn bạn
Lại là quên test, có tháng có 5 CN. Xin lỗi.
Bạn test lại nhé. Phiền bạn quá.
PHP:
Sub TestCN()
Dim iY As Long, iM As Long, iDate As Date, endR As Long, iDay As Long
Dim i As Long, iD As Long, k As Long
Dim myRng As Range, rngR As Range
ActiveSheet.Select
Set myRng = Range("A7:D1000")
With myRng
Set rngR = .Find(What:="ghi chú", After:=myRng(1), LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
End With
endR = rngR.Row 'dong co chu ghi chu'
Range([k7], Cells(endR, "AP")).Font.ColorIndex = 0
iY = Year(Range("R1")): iM = Month(Range("R1")): iDay = Day(Range("R1"))
For i = 0 To 6
  iD = Cells(7, 11 + (2 * i))
  iDate = DateSerial(iY, iM, iD)
  If Weekday(iDate) = 1 Then
    If Cells(7, 11) = iDay Then
      Range(Cells(9, 11 + (2 * i)), Cells(endR, 11 + (2 * i) + 1)).Font.ColorIndex = 3
      Range(Cells(7, 11 + (2 * i)), Cells(7, 11 + (2 * i) + 1)).Font.ColorIndex = 3
      For k = 1 To 2
        If 11 + (2 * i) + 1 + 14 * k < 43 Then 'cot AQ'
          Range(Cells(9, 11 + (2 * i) + 14 * k), Cells(endR, 11 + (2 * i) + 1 + 14 * k)).Font.ColorIndex = 3
          Range(Cells(7, 11 + (2 * i) + 14 * k), Cells(7, 11 + (2 * i) + 1 + 14 * k)).Font.ColorIndex = 3
        End If
      Next
    Else
      Range(Cells(9, 9 + (2 * i)), Cells(endR, 9 + (2 * i) + 1)).Font.ColorIndex = 3
      Range(Cells(8, 9 + (2 * i)), Cells(8, 9 + (2 * i) + 1)).Font.ColorIndex = 3
      For k = 1 To 2
        If 11 + (2 * i) + 1 + 14 * k < 43 Then 'cot AQ'
          Range(Cells(9, 9 + (2 * i) + 14 * k), Cells(endR, 9 + (2 * i) + 1 + 14 * k)).Font.ColorIndex = 3
          Range(Cells(8, 9 + (2 * i) + 14 * k), Cells(8, 9 + (2 * i) + 1 + 14 * k)).Font.ColorIndex = 3
        End If
      Next
    End If
    Exit For
  End If
Next
Set myRng = Nothing
Set rngR = Nothing

End Sub
 
Tôi xem qua file của tác giả, tuy chưa hiểu lắm về yêu cầu, nhưng chạy code của các cao thủ, xem kết quả thì nhận thấy rằng: Bài này có thể dùng Conditional Formating để tô màu... Tại sao tác giả không dùng mà lại dùng code chi cho lằng nhằng nhỉ?
Với Conditional Formating, quá đơn giản để tô màu theo yêu cầu này!
 

Bạn ơi chạy đúng rồi bạn. Cám ơn bạn nhiều lắm nghe.
Vì trong bảng chấm công của Mai có column Phụ cấp sẽ phụ thuộc vào ngày công là ngày thường hay ngày chủ nhật mà mới tập viết macro thôi nên không làm được chiêu tô màu ngày cn tự động và làm phiền bạn quá. Lúc đầu tính để tô thủ công nhưng tham khảo trong forum có chỉ cách tô màu ngày cuối tuần tự động mới dám đưa cái bí của mình lên nhờ các bạn chỉ dẫn. Lần nữa cảm ơn bạn nghe.
Mong là sẽ được bạn chỉ dẫn ở lần khác. Chào bạn nhe
 
- Khi viết code vba, tui sử dụng được hàm Trim nhưng tìm làm mãi mà không sử dụng được hàm Upper hay Lower
- Ví dụ tui tạo 1 function Test(svar:string). Trong code Test tui muốn đổi svar thành chữa hoa hết hay thành chữ thường hết thì phải viết code như thế nào ạ.
- Mong các bạn chỉ giúp. Chân thành cám ơn
Bạn dùng code: WorksheetFunction.prorper (string)
+ trong đó string là chuỗi mà bạn cần viết hoa
 
Web KT

Bài viết mới nhất

Back
Top Bottom