nó là sự cố, nghĩa là YKK, hình như là 1 loại khóa kéo bác ạ.
Làm sao biết CurrentDate Mod 7 = 1 chắc chắn là chủ nhật?Em nhặt nhạnh và chắp vá lại các ý kiến luôn.
Array nhanh thật!!!
If CurrentDate Mod 7 = 1 Then
Y2K là sự cố năm 2000, không liên quan gì đến thế kỷ, nó là năm kế tiếp năm cuối cùng của hệ thống máy tính có 2 số đầu là 19. Qua năm 2000 thì máy tính nhầm 2000 với 1900 sinh ra rối chuyện gọi là sự cố Y2K.(/ậy bạn nghỉ Y2K là như thế nào?
Thế anh có tin nó không? Nó duyệt các năm 2000, 2100, 2200, 2300, ... , 9900. Một giai đoạn kéo dài 80 thế kỷCòn đây là ChartGPT 4 dạy cho mình:
PHP:For i = 20 To 99 Year = i * 100
Em thử với hàm mod trên bảng tính. Vô tình nó ứng thứ 2 đến thứ 6 là 2->6, thứ 7 là 0, và 1 là chủ nhật.Làm sao biết CurrentDate Mod 7 = 1 chắc chắn là chủ nhật?
Phát sinh vấn đề là quy nạp vội, nhưng may. May ở chỗ ngày 1/1/1900 là chủ nhật và mod 7 = 1Vậy phát sinh vấn đề
Sub DanhSachNgay31ChuNhatCuoiThang()
Dim yearStart As Integer
Dim yearEnd As Integer
Dim currentYear As Integer
Dim currentDate As Date
' Thiết lập khoảng năm (từ năm 2000 đến 2099)
yearStart = 2000
yearEnd = 2099
' Xóa nội dung trong cột A, B, C nếu có
Columns("A:C").ClearContents
' Thiết lập tiêu đề
Range("A1").Value = "Năm"
Range("B1").Value = "Tháng"
Range("C1").Value = "Ngày 31"
' Bắt đầu từ hàng thứ 2
Dim row As Integer
row = 2
' Lặp qua mỗi năm từ yearStart đến yearEnd
For currentYear = yearStart To yearEnd
' Lặp qua mỗi tháng từ tháng 1 đến tháng 12
For currentMonth = 1 To 12
' Tạo ngày 1 của tháng tiếp theo
currentDate = DateSerial(currentYear, currentMonth + 1, 1)
' Trừ đi 1 ngày để lấy ngày cuối cùng của tháng hiện tại
currentDate = currentDate - 1
' Kiểm tra xem ngày cuối cùng của tháng đó rơi vào Chủ nhật và có phải là ngày 31 không
If Weekday(currentDate) = vbSunday And Day(currentDate) = 31 Then
' Đưa thông tin vào cột A, B, C
Cells(row, 1).Value = currentYear
Cells(row, 2).Value = currentMonth
Cells(row, 3).Value = Format(currentDate, "dd/mm/yyyy")
row = row + 1
End If
Next currentMonth
Next currentYear
End Sub
vậy em sửa lại đoạn này là đượcCần đọc lại bài 23
View attachment 297823
Sub DanhSachNgay31ChuNhatCuoiThang()
Dim yearStart As Integer
Dim yearEnd As Integer
Dim currentYear As Integer
Dim currentDate As Date
' Thiết lập khoảng năm (từ năm 2001 đến 2100)
yearStart = 2001
yearEnd = 2100
' Xóa nội dung trong cột A, B, C nếu có
Columns("A:C").ClearContents
' Thiết lập tiêu đề
Range("A1").Value = "Năm"
Range("B1").Value = "Tháng"
Range("C1").Value = "Ngày 31"
' Bắt đầu từ hàng thứ 2
Dim row As Integer
row = 2
' Lặp qua mỗi năm từ yearStart đến yearEnd
For currentYear = yearStart To yearEnd
' Lặp qua mỗi tháng từ tháng 1 đến tháng 12
For currentMonth = 1 To 12
' Tạo ngày 1 của tháng tiếp theo
currentDate = DateSerial(currentYear, currentMonth + 1, 1)
' Trừ đi 1 ngày để lấy ngày cuối cùng của tháng hiện tại
currentDate = currentDate - 1
' Kiểm tra xem ngày cuối cùng của tháng đó rơi vào Chủ nhật và có phải là ngày 31 không
If Weekday(currentDate) = vbSunday And Day(currentDate) = 31 Then
' Đưa thông tin vào cột A, B, C
Cells(row, 1).Value = currentYear
Cells(row, 2).Value = currentMonth
Cells(row, 3).Value = Format(currentDate, "dd/mm/yyyy")
row = row + 1
End If
Next currentMonth
Next currentYear
End Sub