Nhập liệu theo Form trên Sheet ? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

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
Xin chào tất cả các bạn,

Như tiêu đề của bài viết,chi tiết cụ thể tôi xin phép được nêu trong tập tin đính kèm.
Rất mong nhận được được sự giúp đỡ của các bạn
 

File đính kèm

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
 
Upvote 0
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

Xin chào giaiphap,
Cảm ơn bạn rất nhiều vì đã giúp đỡ.
Tôi đã thử nghiệm code trên của bạn , hiện tại còn một vấn đề mà tôi không nghĩ đến ( đã bổ sung các dòng ghi đỏ - trong tập tin đính kèm ).

Phiền bạn và mọi người xem giúp ạ.
 

File đính kèm

Upvote 0
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
 
Upvote 0
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

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 ạ.
 
Upvote 0
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 ạ.
Bạn chạy thử Sub này coi sao.
PHP:
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
 
Upvote 0
À! Té ra là cần đối chiếu với những khách đã đăng kí trước.
 
Upvote 0
bạn thử code
Mã:
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
 
Upvote 0
Xin cảm ơn 2 bạn Ba TêHieuCD rất nhiều,
Tôi sẽ test thử code của 2 bạn nếu có vấn đề gì nhờ 2 bạn và mọi người hỗ trợ thêm ạ.
 
Upvote 0
Web KT

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

Back
Top Bottom