小弟现在遇到一个解锁工作表画面闪烁的问题
描述如下:
工作簿中有2个工作表,现在需要
①在工作表1被激活(也就是前台表示)的时候锁定工作表1,使其不能被修改。
②在工作表2被激活(也就是前台表示)的时候解锁工作表1,使工作表2的vba程序能够修改工作表1的单元格中的内容。
工作表1的VBA代码如下
Private Sub Worksheet_Activate()
'シートの保護
Sheets(1).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Private Sub Worksheet_Deactivate()
'シート保護の解除
Sheets(1).Unprotect
End Sub
现遇到的问题:
在工作表2被激活(也就是前台表示)的时候解锁工作表1处理中
首先鼠标点击工作表2的tab时画面会切换到工作表2,这时触发工作表1的Worksheet_Deactivate()事件
对工作表1进行解锁处理,此时画面会闪烁回工作表1进行处理,然后再回到工作表2的画面。各位高手没有办法让画面不闪烁就达到我要的效果呢?
我已经试过将解锁处理放到工作表2的Worksheet_Activate(),还是一样不起作用只要达到效果思路不限。小弟100分双手奉上
描述如下:
工作簿中有2个工作表,现在需要
①在工作表1被激活(也就是前台表示)的时候锁定工作表1,使其不能被修改。
②在工作表2被激活(也就是前台表示)的时候解锁工作表1,使工作表2的vba程序能够修改工作表1的单元格中的内容。
工作表1的VBA代码如下
Private Sub Worksheet_Activate()
'シートの保護
Sheets(1).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Private Sub Worksheet_Deactivate()
'シート保護の解除
Sheets(1).Unprotect
End Sub
现遇到的问题:
在工作表2被激活(也就是前台表示)的时候解锁工作表1处理中
首先鼠标点击工作表2的tab时画面会切换到工作表2,这时触发工作表1的Worksheet_Deactivate()事件
对工作表1进行解锁处理,此时画面会闪烁回工作表1进行处理,然后再回到工作表2的画面。各位高手没有办法让画面不闪烁就达到我要的效果呢?
我已经试过将解锁处理放到工作表2的Worksheet_Activate(),还是一样不起作用只要达到效果思路不限。小弟100分双手奉上
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongDeclare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As LongCall SendMessage(sheet.hwnd, WM_SETREDRAW, 0, 0&)
Call SendMessage(sheet.hwnd, WM_SETREDRAW, 1, 0&)或者
Call LockWindowUpdate(sheet.hwnd)
Application.ScreenUpdating = False
Sheets(1).Unprotect
End Sub