- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2024-11-14
|
2#
發表於 2013-10-18 01:18
| 只看該作者
本帖最後由 luhpro 於 2013-10-18 01:30 編輯
用了以下VBA
本想輸入資料後 自動鎖定儲存格
用在普通儲存格是可以正常使用
但如果已經合併的儲存格
...
kkttin 發表於 2013-10-17 12:43 
當標的儲存格是個合併的儲存格時 (.Count > 1),
抓取資料要改用 .Value2(1, 1)
否則不是發生錯誤(.Value)就是得到空值(.Text)
又因為你有一行 On Error Resume Next(發生錯誤時忽略該錯誤,改從下一行指令開始繼續執行),
故而就發生你不想要的結果囉.
改成如下即可 :- With Target
- .Parent.Unprotect
- .Locked = False
- If .Count = 1 Then
- If .Value <> "" Then
- .Locked = True
- .Parent.Protect Contents:=True
- End If
- Else
- If .Value2(1, 1) <> "" Then
- .Locked = True
- .Parent.Protect Contents:=True
- End If
- End If
- End With
複製代碼 沒記錯的話在 Office 2000 時不會有這個問題, (可以用 .Value 或 . Text 正常抓到合併後的值)
似乎是到 2003 時改的(我家裡用的版本),
我覺得這有點多此一舉,
既然儲存格合併後只能保留一個值,
那多出那些 .Value2(1, 2), .Value2(1, 3)... 沒啥意義.(根本無法使用)
更糟糕的是 我剛剛試著賦予個值給 Target.Value2(1, 2) , (屢試不爽)
它會發生嚴重錯誤且直接關閉 Excel. O.O"
(若對 [C4].Value2(1, 2) 賦值沒問題, 但對 Target.Value2(1, 2) 賦值就會出大錯) |
|