返回列表 上一主題 發帖

[發問] 這到底該發在那ㄚ?...怎麼做?當儲存格輸入數值後,該儲存格即自動上鎖.謝謝!

[發問] 這到底該發在那ㄚ?...怎麼做?當儲存格輸入數值後,該儲存格即自動上鎖.謝謝!

我是小呆~~這到底該發在那ㄚ???

如題------怎麼做?...當儲存格輸入數值後,該儲存格即自動上鎖.~~THANKS!

當我在sheet1中,某個儲存格輸入數值後,希望該儲存格可馬上"自動上鎖"....該怎麼做呢?

若要寫excel vba .....請高手們提供程式碼,救救電腦小呆吧!

我是小呆~~這到底該發在那ㄚ???

如題------怎麼做?...當儲存格輸入數值後,該儲存格即自動上鎖.~~THANKS! ...
kaohsiung-man 發表於 2013-4-20 11:34



   馬上上鎖的定義為何? 隱藏?跳開?還是?

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

回復 2# mark15jill


我是小呆~~ , 是的~~~~前輩!

可馬上"自動上鎖"的意思就是........對輸入數值的該儲存格,在鍵入數值按enter後,該儲存格即可被自動上鎖,而無法再進行更改!
並不是隱藏或跳出!!!

有尋獲...在sheet1中,某個儲存格輸入數值後,該工作頁隨即自動上鎖,而無法再進行更改!
但小弟需要的是...自動上鎖該儲存格,而非整個工作頁~~



若要寫excel vba .....請高手們提供程式碼,救救電腦小呆吧!

TOP

回復  mark15jill


我是小呆~~ , 是的~~~~前輩!

可馬上"自動上鎖"的意思就是........對輸入數值的 ...
kaohsiung-man 發表於 2013-4-22 08:34


以下程式碼可做到... 但是... 是大範圍的,請自行修改
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     On Error Resume Next
  3.     ActiveSheet.Unprotect
  4.     ActiveSheet.Cells.Locked = False
  5.    
  6.     Dim Rng As Range
  7.     ActiveSheet.Unprotect
  8.     For Each Rng In ActiveSheet.UsedRange
  9.         If Rng.Value <> "" Or Rng.HasFormula Then Rng.Locked = True
  10.     Next
  11.     ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
  12. End Sub
複製代碼

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

本帖最後由 kaohsiung-man 於 2013-4-22 13:27 編輯

回復 4# mark15jill


.....太感激您ㄌ~~~

但是~~~上鎖了....小的該怎麼解鎖...可否在程式碼中加入解鎖密碼呢?

而且,若是只要鎖定A1~C10及F1~H10即可...又該從何處修改呢?


謝謝前輩

TOP

回復 4# mark15jill
這是小呆寫的劣作...該如何與您的程式碼結合成:
1.當儲存格輸入數值後,該儲存格即自動上鎖.
2.附有解鎖password.
3.僅對A1~C10及F1~H10儲存格作自動上鎖的設定.
盼您不吝指教 ~ 謝謝 !

Private Sub Worksheet_Change(ByVal Target As Range)
'Automatically Protecting After Input
'unlock all cells in the range first
Dim MyRange As Range
Const Password = "123" '**Change password here**
Set MyRange = Intersect(Range("A1:C10,F1:H10"), Target) '**change range here**
If Not MyRange Is Nothing Then
Unprotect Password:=Password
MyRange.Locked = True
Protect Password:=Password
End If
End Sub

TOP

本帖最後由 mark15jill 於 2013-4-22 14:24 編輯

有洗帖的嫌疑....<6#>
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)


  2.     On Error Resume Next

  3.     ActiveSheet.Unprotect

  4.     ActiveSheet.Cells.Locked = False

  5.    
  6.     Dim Rng1,Rng2 As Range

  7.     ActiveSheet.Unprotect
  8.    
  9. '第一個封鎖區域   
  10.     For Each Rng1 In Range("A1:C10")  '這改範圍

  11.         If Rng1.Value <> "" Or Rng1.HasFormula Then Rng1.Locked = True
  12.         If [x1] = "123" Then Rng1.Locked = False  '設定解除條件

  13.     Next

  14. '第二個封鎖區域
  15.     For Each Rng2 In Range("F1:H10") '這改範圍

  16.         If Rng2.Value <> "" Or Rng2.HasFormula Then Rng2.Locked = True
  17.          If [x1] = "123" Then Rng2.Locked = False'設定解除條件
  18.     Next

  19.     ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

  20. End Sub
複製代碼

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

回復 8# mark15jill
SORRY....#6 ->手按快了啦...

不過...結合的方式,實非小的所能想像~~~

只能說學藝不精,粗淺僅得皮毛

......................................................................

方才測試....似乎不用以password解除保護~~直接 工具>保護>取消保護工作表 即可解鎖了...

前輩,請查照....謝謝!

TOP

本帖最後由 mark15jill 於 2013-4-22 15:12 編輯
回復  mark15jill
SORRY....#6 ->手按快了啦...

不過...結合的方式,實非小的所能想 ...
kaohsiung-man 發表於 2013-4-22 15:04



    之所以用
Private Sub Worksheet_SelectionChange(ByVal Target As Range)   ..... End Sub
不同於
Sub kka  .... End Sub

前者
就是只要有變動<不管是滑鼠點擊或儲存格變動>,就會按照程式去跑..除非把巨集功能關掉

後者
要執行後,功能才會啟動....

但是
只要將巨集功能關掉或另外設定... 這一切都沒用ˇˇ

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

回復 10# mark15jill


    ㄜ ........

慚愧..................................前輩,what are U talking about ???

小的 ...不懂...

TOP

        靜思自在 : 人事的艱難與琢磨,就是一種考驗。
返回列表 上一主題