各位論壇的先進大家好,小弟從學習vba語法以來將近有半個月的時間了,目的是為了設計一套成績計算系統。多虧論壇上多位熱心人士的幫忙,得以解決許多問題。也因為如此,所以有些語法一知半解。有勞各位熱心的大大出手相助。
小弟最近遇到了一個問題,原本我已經寫好了語法,目的是保護sheet2和sheet3的部分資料,而且前幾天也已經執行成功,可是今天又執行時,卻又出現了錯誤訊息「物件不支援此屬性或方法」而此列反黃 .Selection.Locked = True 老實說,我也不知哪裡出錯,所以來這兒尋求協助,是不是自己有些盲點沒發現。
語法
Sub Worksheet_Activate()
With Worksheets("期中評量")
.Range("A1:v2").Select
.Range("a3", cells(3, 1).End(xlDown)).Select
.Selection.Locked = True
.Selection.FormulaHidden = True
.ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
End Sub
Sub Worksheet_Deactivate()
With Worksheets("期中評量")
.cells.Select
.Selection.Locked = False
.Selection.FormulaHidden = True
.ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
End Sub
抱歉!有勞兩位又讓小弟上了一課。原來發現是自己的問題。問題在這裡,為了保護成績單的標題列,所以我寫了(當然是兩位修正的)下列語法:
Option Explicit
Sub Worksheet_Activate()
With Worksheets("期中成績")
.Activate
.Range("b1").Select
.Range("A3:j3").Select
.Range("a5", .cells(5, 1).End(xlDown)).Select
Selection.Locked = True
Selection.FormulaHidden = True
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=6323
End With
End Sub
但是成績單的號碼列必須跟隨基本資料欄(就是填班級、人數就會自動出現所有座號)這時語法就會出現錯誤,因為無法更動。所以我又寫了
Sub Worksheet_Deactivate()
Worksheets("期中成績").Unprotect
End Sub
但是這樣的話,一離開這個工作表,訊息列就會問我解開的密碼,所以:1.該怎麼解決呢?2.或是有其他可以保護標題列的語法嗎?(又要麻煩了)
'與考人數'
Dim aa As Integer, bb As Integer, cc As Integer, dd As Integer, ee As Integer
aa = Worksheets("期中評量").Range("c3", Range("c3").End(xlDown)).SpecialCells(xlCellTypeConstants, xlNumbers).Count
bb = Worksheets("期中評量").Range("d3", Range("d3").End(xlDown)).SpecialCells(xlCellTypeConstants, xlNumbers).Count
cc = Worksheets("期中評量").Range("e3", Range("e3").End(xlDown)).SpecialCells(xlCellTypeConstants, xlNumbers).Count
dd = Worksheets("期中評量").Range("f3", Range("f3").End(xlDown)).SpecialCells(xlCellTypeConstants, xlNumbers).Count
ee = Worksheets("期中評量").Range("g3", Range("g3").End(xlDown)).SpecialCells(xlCellTypeConstants, xlNumbers).Count
Worksheets("期中統計").Range("d4").Value = aa
Worksheets("期中統計").Range("h4").Value = bb
Worksheets("期中統計").Range("l4").Value = cc
Worksheets("期中統計").Range("p4").Value = dd
Worksheets("期中統計").Range("t4").Value = ee