我有一个电子表格,一个部门会扫描一个样本,它会在扫描(发送)时在其旁边的列中标记时间和日期。然后,下一个部门会将样本扫描到另一列,并在扫描(接收)时记录时间和日期。我正在使用的代码如下,但由于保护,我不能同时由两个人编辑电子表格。有什么我可以做到的吗?
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Protect ("Password"), UserInterfaceOnly:=True
'Only write a timestamp of an odd column changes (because the timestamps go in the even columns)
If Target.Column Mod 2 > 0 Then
'Get the first part of the address, to get the actual column being changed
Dim columnAddress As String
columnAddress = Target.Address
If InStr(columnAddress, ":") > 0 Then
columnAddress = Left(columnAddress, InStr(columnAddress, ":") - 1)
End If
If Not ActiveSheet.Range(columnAddress).Formula = "" Then
'Write the timestamp for the previous column
ActiveSheet.Range(columnAddress).Offset(0, 1).Formula = Now
Else
ActiveSheet.Range(columnAddress).Offset(0, 1).Formula = ""
End If
End If
End Sub
答案 0 :(得分:1)
我强烈建议您在此处使用ADO。如果你走这条路线,你将有一个远程Excel工作簿(或.mdb,如果你愿意的话)作为你的数据库和“子”工作簿(或Excel加载项)将相关数据写入这个数据库,如果需要,也可以从中读取。
此处提供了VBA中ADO的概述:http://www.xtremevbtalk.com/showthread.php?t=217783。