khống chế dữ liệu thời gian nhập vào theo mốc thời gian cố định

Liên hệ QC

luuvanchuan

Thành viên mới
Tham gia
11/12/19
Bài viết
28
Được thích
1
Chào cả nhà.
Mình có 1 vấn đề muốn nhờ mọi người giúp.

trong 1 sheet, có cột nhập ngày tháng năm. Mình muốn bảo vệ cột đó theo cách như sau: chỉ nhập ngày tháng năm trong tháng , còn ngoài tháng thì không cho nhập vào.

Ví dụ cho dễ hiểu:
bây giờ là 12/2019. mình chỉ cho nhập dữ liệu ngày từ 1/12/2019~31/12/2019. còn dữ liệu nhập vào là ngày của t11/2019 trở về trước và 1/2020 trở đi thì không được nhập.
Hết tháng 12 , sang tháng 1 thì chỉ nhập được các ngày của tháng 1, ngày của các tháng khác không cho nhập.


Rất mong mọi người chỉ giáo!
 
Bạn có thể dùng Data Validation, không dùng code.
Phuocam....
nhận tiện cho mình hỏi:
Mình có File như đính kèm, hiện đang bảo về dữ liệu bằng VBA như dưới,
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim i As Long, j As Long, arr
With Sheet1
Application.Calculation = xlCalculationManual
arr = .Range("A1").Resize(10000, 55).Value
.Unprotect 123
For i = 4 To 10000
For j = 1 To 55
If Not IsError(arr(i, j)) Then
If Len(arr(i, j)) Then
.Cells(i, j).Locked = True
End If
End If
Next j
Next i
.Protect 123
Application.Calculation = xlCalculationAutomatic
End With
End Sub

Tuy nhiên chức năng auto filter bị khóa , không sử dụng được.

Vậy bạn có cách nào giúp mình sử dụng đưuọc chức năng ấy không?
 

File đính kèm

  • Quản lí sản xuất 320 092019 Ver1.3.xlsm
    2.7 MB · Đọc: 5
Upvote 0
Phuocam....

Tuy nhiên chức năng auto filter bị khóa , không sử dụng được.

Vậy bạn có cách nào giúp mình sử dụng đưuọc chức năng ấy không?
Mã:
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
       Dim i As Long, j As Long, arr
       With Sheet1
            Application.Calculation = xlCalculationManual
            arr = .Range("A1").Resize(10000, 55).Value
            .Unprotect 123
            For i = 4 To 10000
                For j = 1 To 55
                    If Not IsError(arr(i, j)) Then
                    If Len(arr(i, j)) Then
                       .Cells(i, j).Locked = True
                    End If
                    End If
                Next j
           Next i
           .Protect 123
           .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
           Application.Calculation = xlCalculationAutomatic
      End With
End Sub
Không biết đúng ý anh không. Nhưng mà có vẻ cái sự kiện này làm máy em treo luôn
 
Upvote 0
Phuocam....
nhận tiện cho mình hỏi:
Mình có File như đính kèm, hiện đang bảo về dữ liệu bằng VBA như dưới,
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim i As Long, j As Long, arr
With Sheet1
Application.Calculation = xlCalculationManual
arr = .Range("A1").Resize(10000, 55).Value
.Unprotect 123
For i = 4 To 10000
For j = 1 To 55
If Not IsError(arr(i, j)) Then
If Len(arr(i, j)) Then
.Cells(i, j).Locked = True
End If
End If
Next j
Next i
.Protect 123
Application.Calculation = xlCalculationAutomatic
End With
End Sub

Tuy nhiên chức năng auto filter bị khóa , không sử dụng được.

Vậy bạn có cách nào giúp mình sử dụng đưuọc chức năng ấy không?
Bạn Thử cách này xem : Bạn sửa thêm .Protect 123
Thành .Protect 123, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFormattingCells:=True, AllowFiltering:=True
Trong cửa sổ Protect Sheet bạn đánh dấu tích vào các mục Format Cells; Format Columns; Format Rows; và mục Use AutoFilter
 

File đính kèm

  • Quản lí sản xuất 320 092019 Ver1.3.xlsm
    2.7 MB · Đọc: 7
Upvote 0
Mã:
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
       Dim i As Long, j As Long, arr
       With Sheet1
            Application.Calculation = xlCalculationManual
            arr = .Range("A1").Resize(10000, 55).Value
            .Unprotect 123
            For i = 4 To 10000
                For j = 1 To 55
                    If Not IsError(arr(i, j)) Then
                    If Len(arr(i, j)) Then
                       .Cells(i, j).Locked = True
                    End If
                    End If
                Next j
           Next i
           .Protect 123
           .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
           Application.Calculation = xlCalculationAutomatic
      End With
End Sub
Không biết đúng ý anh không. Nhưng mà có vẻ cái sự kiện này làm máy em treo luôn
hi, cảm ơn bạn nhé. cái này làm mình trăn trở bao lâu.

Làm phiền bạn chút nữa: sử dụng chức năng Group trong thẻ DATA thì Code như nào bạn nhỉ?1576820674152.png
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn Thử cách này xem : Bạn sửa thêm .Protect 123
Thành .Protect 123, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFormattingCells:=True, AllowFiltering:=True
Trong cửa sổ Protect Sheet bạn đánh dấu tích vào các mục Format Cells; Format Columns; Format Rows; và mục Use AutoFilter
cảm ơn bạn nhé
 
Upvote 0
Web KT
Back
Top Bottom