Private Sub Worksheet_Change(ByVal Target As Range)
Dim iRow As Integer
iRow = Target.Row
'Application.EnableEvents = False
Cells(iRow, 3) = Cells(iRow, 3) + Cells(iRow, 2)
'Application.EnableEvents = True
End Sub
如上代碼:
加上'Application.EnableEvents = False代碼 就禁用了Worksheet_Change 不再觸發(fā)
省略就不斷的觸發(fā),導(dǎo)致結(jié)果不正確,代碼死循環(huán)
--------------------------------------
Me.DTPicker1.日期控件的注冊和使用
工具--引用-Microsoft windows common controls-2 6.0(sp4)
DTPicker 控件(Microsoft date and time picker contorl 6.0),
MSCOMCT2.OCX 與文件放在同一目錄,再加上下面的代碼
注釋掉這句。
Add a "s" (Means Silent; display no message boxes) parameter: 解釋開關(guān)s 的目的,意思是“靜止的,不顯示對話框”。
Private Sub Workbook_Open()
Shell "REGSVR32 /s " & ThisWorkbook.Path & "\MSCOMCT2.OCX"
Sheet1.Visible = xlSheetVeryHidden
Sheet2.ScrollArea = "$A$1:$R$23"
End Sub
***相關(guān)代碼
Private Sub DTPicker1_CloseUp()
'禁用事件,在將DTP控件的值更新到單元格時(shí),防止Worksheet_Change被誤激活
Application.EnableEvents = False
ActiveCell.Value = Me.DTPicker1.Value
Me.DTPicker1.Visible = False
'啟用事件
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
'判斷是否只選中了單個(gè)單元格
If Target.Count = 1 Then
'如果刪除第三列的單元格內(nèi)容,則隱藏DTP控件
If Target.Column = 3 And Target = "" Then
Me.DTPicker1.Visible = False
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
Application.EnableEvents = False
If Target.Column = 3 Then
With Me.DTPicker1
.Visible = True
'調(diào)整DTP控件的位置,使其顯示在當(dāng)前單元格之中
.Top = Target.Top
.Left = Target.Left
If Target <> "" Then
'如果當(dāng)前單元格已有內(nèi)容,則設(shè)置DTP控件初始值為當(dāng)前單元格日期,否則為系統(tǒng)當(dāng)前日期
.Value = Target.Value
Else
ActiveCell.Value = Date
End If
End With
Else
Me.DTPicker1.Visible = False
End If
Application.EnableEvents = True
End If
End Sub
注冊到目標(biāo)電腦
Microsoft date and time picker contorl 6.0 選擇這個(gè) 就可以在工作表上畫出DTPicker 控件