Hoàng Nhật Phương
Thành viên gắn bó



- Tham gia
- 5/11/15
- Bài viết
- 1,895
- Được thích
- 1,219
Sub GPE()
If Sheet1.[d13] >= Sheet1.[d14] Then
MsgBox "Thoi gian su dung chua hop ly"
Exit Sub
End If
If Application.WorksheetFunction.CountBlank(Sheet1.[d9:d16]) > 0 Then
MsgBox "Ban nhap du lieu chua du, khong duoc bo trong vung D9:D16"
Exit Sub
End If
If Sheets(Sheet1.Range("D9").Value).Range("C65000").End(xlUp).Value < Sheet1.Range("D10").Value Then
Sheets(Sheet1.Range("D9").Value).Range("C65000").End(xlUp).Offset(1).Resize(, 8).Value = Application.Transpose(Sheet1.[D10:D17])
ElseIf Sheets(Sheet1.Range("D9").Value).Range("C65000").End(xlUp).Value = Sheet1.Range("D10").Value Then
If Sheets(Sheet1.Range("D9").Value).Range("G65000").End(xlUp).Value < Sheet1.Range("D13").Value Then
Sheets(Sheet1.Range("D9").Value).Range("C65000").End(xlUp).Offset(1).Resize(, 8).Value = Application.Transpose(Sheet1.[D10:D17])
Else
MsgBox "Thoi diem nay " & Sheet1.[D9] & " da co nguoi dat"
End If
Else
MsgBox "khong thoa man"
End If
End Sub
Thử đoạn code này xem. Nhớ định dạng 2 cột Từ lúc và đến lúc (Cột F và cột G) là thời gian nghe.
Mã:Sub GPE() If Sheet1.[d13] >= Sheet1.[d14] Then MsgBox "Thoi gian su dung chua hop ly" Exit Sub End If If Application.WorksheetFunction.CountBlank(Sheet1.[d9:d16]) > 0 Then MsgBox "Ban nhap du lieu chua du, khong duoc bo trong vung D9:D16" Exit Sub End If If Sheets(Sheet1.Range("D9").Value).Range("C65000").End(xlUp).Value < Sheet1.Range("D10").Value Then Sheets(Sheet1.Range("D9").Value).Range("C65000").End(xlUp).Offset(1).Resize(, 8).Value = Application.Transpose(Sheet1.[D10:D17]) ElseIf Sheets(Sheet1.Range("D9").Value).Range("C65000").End(xlUp).Value = Sheet1.Range("D10").Value Then If Sheets(Sheet1.Range("D9").Value).Range("G65000").End(xlUp).Value < Sheet1.Range("D13").Value Then Sheets(Sheet1.Range("D9").Value).Range("C65000").End(xlUp).Offset(1).Resize(, 8).Value = Application.Transpose(Sheet1.[D10:D17]) Else MsgBox "Thoi diem nay " & Sheet1.[D9] & " da co nguoi dat" End If Else MsgBox "khong thoa man" End If End Sub
Sub gpeGIAIPHAP()
Dim ShName As String
Const HenGap As String = "Hen Ban Làn Sau!"
Sheet1.Select
If [d10].Value > Date Then
MsgBox "Ban Da Tre Trong Viec Dat Phòng!", , HenGap
Exit Sub
End If
If [d13] >= [d14] Then
MsgBox "Thòi gian su dung chua hop lý", , HenGap
Exit Sub
End If
If Application.WorksheetFunction.CountBlank([d9:d16]) > 0 Then
MsgBox "Ban nhap du lieu chua du, khong duoc bo trong vung D9:D16"
Exit Sub
End If
ShName = Range("D9").Value
With Sheets(ShName).Range("C65000").End(xlUp).Offset(1).Resize(, 8)
If Sheets(ShName).Range("C65000").End(xlUp).Value < Range("D10").Value Then
.Value = Application.Transpose(Sheet1.[D10:D17])
ElseIf Sheets(ShName).Range("C65000").End(xlUp).Value = Range("D10").Value Then
If Sheets(ShName).Range("G65000").End(xlUp).Value < Range("D13").Value Then
.Value = Application.Transpose([D10:D17])
Else
MsgBox "Thoi diem nay " & [D9] & " da có nguòi dat", , HenGap
End If
Else
MsgBox "không thoa man" , , HenGap
End If
End With
End Sub
Bạn sửa lại là vầy, thử coi:
PHP:Sub gpeGIAIPHAP() Dim ShName As String Const HenGap As String = "Hen Ban Làn Sau!" Sheet1.Select If [d10].Value > Date Then MsgBox "Ban Da Tre Trong Viec Dat Phòng!", , HenGap Exit Sub End If If [d13] >= [d14] Then MsgBox "Thòi gian su dung chua hop lý", , HenGap Exit Sub End If If Application.WorksheetFunction.CountBlank([d9:d16]) > 0 Then MsgBox "Ban nhap du lieu chua du, khong duoc bo trong vung D9:D16" Exit Sub End If ShName = Range("D9").Value With Sheets(ShName).Range("C65000").End(xlUp).Offset(1).Resize(, 8) If Sheets(ShName).Range("C65000").End(xlUp).Value < Range("D10").Value Then .Value = Application.Transpose(Sheet1.[D10:D17]) ElseIf Sheets(ShName).Range("C65000").End(xlUp).Value = Range("D10").Value Then If Sheets(ShName).Range("G65000").End(xlUp).Value < Range("D13").Value Then .Value = Application.Transpose([D10:D17]) Else MsgBox "Thoi diem nay " & [D9] & " da có nguòi dat", , HenGap End If Else MsgBox "không thoa man" , , HenGap End If End With End Sub
Bạn chạy thử Sub này coi sao.Xin chào Hoang2013,
Tôi đã thử code của bạn, cũng giống với code của bạn giaiphap.
Code chưa xử lý được vấn đề sau (đã nêu bổ sung trong mục đính kèm bài 2):
+Thời điểm đặt phòng phải lớn hơn hoặc bằng thời điểm hiện tại.
Ví dụ:
-ngày hôm nay là 17/05 thì thời điểm đặt phòng chỉ được phép đặt từ ngày 17/05 trở về sau. (>=17/05)
-Giả sử có người đặt phòng vào ngày 01/06 từ 9h00 đến 11h00 thì các ngày từ ngày 00h01 17/05 ~đến trước 9h00 ngày 01/06 vẫn cho phép đặt phòng.
Nhờ các bạn giúp đỡ thêm ạ.
Public Sub LuBu()
Dim sArr(), dArr(1 To 1, 1 To 8), I As Long, R As Long
Dim fTime As Double, eTime As Double, ShName As String
If Application.CountA(Range("D9:D16")) < 8 Then
MsgBox "Chua nhap day du thong tin", , "giaiphapexcel.com"
Exit Sub
End If
If Range("D10") + Range("D13") <= Now Then
MsgBox "Thoi gian khong hop le.", , "giaiphapexcel.com"
Exit Sub
End If
For I = 1 To 8
dArr(1, I) = Range("D" & I + 9)
Next I
'-----------------------------------------'
ShName = Range("D9").Value
fTime = Range("D10") + Range("D13")
eTime = Range("D10") + Range("D14")
With Sheets(ShName)
R = .Range("G50000").End(xlUp).Row
If R > 4 Then
sArr = .Range("C5:G" & R).Value
For I = 1 To UBound(sArr)
If (fTime >= (sArr(I, 1) + sArr(I, 4)) And fTime <= (sArr(I, 1) + sArr(I, 5))) _
Or (eTime >= (sArr(I, 1) + sArr(I, 4)) And eTime <= (sArr(I, 1) + sArr(I, 5))) Then
MsgBox "Thoi gian nay " & ShName & " da duoc dat truoc.", , "giaphapexcel."
Exit Sub
End If
Next I
End If
.Range("C" & R + 1).Resize(, 8) = dArr
MsgBox "Da dat " & ShName & " thanh cong.", , "giaiphapexcel.com"
End With
End Sub
Sub GPE()
Dim Darr(), Rng As Range, LastR As Long, i As Long
On Error GoTo Thoat
Set Rng = Sheets("Form").[D9:D16]
If Application.WorksheetFunction.CountBlank(Rng) > 0 Then
MsgBox "Ban nhap du lieu chua du, khong duoc bo trong vung D9:D16"
Exit Sub
End If
If Rng(2, 1) < Date Then
MsgBox "Ngay dat phong truoc ngay hien tai"
Exit Sub
End If
If Rng(5, 1) >= Rng(6, 1) Then
MsgBox "Gio dat phong khong hop ly"
Exit Sub
End If
With ThisWorkbook.Sheets(Rng(1, 1).Value)
LastR = .Range("C" & Rows.Count).End(xlUp).Row
If LastR > 4 Then
Darr = .Range("C5:G" & LastR).Value
For i = 1 To UBound(Darr)
If Darr(i, 1) = Rng(2, 1).Value Then
If Not (Rng(5, 1) > Darr(i, 5) Or Rng(6, 1) <= Darr(i, 4)) Then
MsgBox "Thoi diem nay da co nguoi dat"
Exit Sub
End If
End If
Next i
End If
.Range("C" & LastR + 1).Resize(, 8).Value = Application.Transpose(Sheets("Form").[D10:D17])
Exit Sub
End With
Thoat:
MsgBox "Du lieu nhap khong hop le"
End Sub