VBA:复制/过去新表格,包括锁定单元格

时间:2015-07-10 11:59:18

标签: excel vba security locking copy-paste

情况如下:

我有一张Excel工作表,其中包含输入工作簿以填写个人资料以及每个月填写一本工作簿。现在,有一个按钮,当用户想要一个新的Excel表格时,出于改变工作场所的原因。

所以例如:Dean先生已经填写了他的每日工作时间,直到4月15日。现在他继续前往另一个位置并按下按钮以改变工作位置。他获得了一张新的Excel工作表,它看起来和以前一样,填写了他从第一张表中写入的数据(从vba-sript复制/粘贴)。现有的条目(单元格)直到15.April也被锁定,因此他无法编辑它们。他继续写下他4月16日的工作时间等等。

我认为如果第二张Excel工作表由宏创建(复制/粘贴)会更好。

第一张纸的名称:sheet1 第二张纸的名称:sheet2

所以我的代码到目前为止还没有发现:

Sub Test()
Dim ws1 As Worksheet
Set ws1 = sheet1.Worksheets("Master")
ws1.Copy sheet2.Sheets(Sheets.Count)
End Sub

那会复制整张纸吗?

此代码用于woorkbooks的密码保护。如何在4月15日之前锁定单个细胞? 那么如何才能读出日期?

Sub sbProtectAllSheets()

    Dim pwd1 As String, pwd2 As String
    pwd1 = InputBox("Please Enter the password")
    If pwd1 = "" Then Exit Sub
    pwd2 = InputBox("Please re-enter the password")

    If pwd2 = "" Then Exit Sub

     'Check if both the passwords are identical
    If InStr(1, pwd2, pwd1, 0) = 0 Or _
    InStr(1, pwd1, pwd2, 0) = 0 Then
        MsgBox "You entered different passwords. No action taken"
        Exit Sub
    End If

    For Each ws In Worksheets
        ws.Protect Password:=pwd1
    Next

    MsgBox "All sheets Protected."

    Exit Sub

End Sub

或者您还有其他建议吗?

电贺 DUC

1 个答案:

答案 0 :(得分:0)

我假设你有每个日期的行,并且他们互相跟随。在列中输入小时,您可以找到第一个为空的小时。我曾经写过这段代码。填写+列+输入小时数的列数。

LastRowR = ActiveSheet.UsedRange.Rows.Count
    For row = 2 To LastRowR
        If ActiveSheet.Cells(row, +column+) = "" Then
            LastRowR = row - 1
            Exit For
        End If
    Next row

然后您可以锁定过去的单元格范围。所以你可以从(" A1":Cells(LastRowR,+ LastColumn +))中得到一个范围,其中+ LastColumn +是工作表中最后一列的编号。