2013-09-27 29 views
0

我已經創建了一個簡單的密碼生成器電子表格,當打開時提示用戶在文本輸入框中輸入一個5位數的數字,然後將這個數字用於一系列公式/命令來創建密碼。該密碼然後顯示在輸出消息框中。電子表格從鎖定開始,解鎖自身,提示輸入號碼,顯示密碼,然後再次鎖定表單。完成此操作後,密碼生成器宏將不能再次使用。我目前的宏觀低於:Microsoft Excel宏循環。密碼生成電子表格,需要重複

私人小組Auto_Open()

Dim InputNo As String 

ActiveSheet.Unprotect ("password") 

Range("R1").Value = InputBox("Please input your Number") 

If Range("R1") > 0 Then 
    MsgBox "Your password is: " & Range("R2").Value 

End If 
ActiveSheet.Protect ("password") 

末次

我需要的是用於文本輸入框,在其中輸入的數量,重現一旦密碼已被顯示,以便該文件可以多次使用,而無需關閉並重新打開。有人可以幫忙嗎?

+0

你應該仍然可以從宏菜單調用'Auto_Open'宏。你能不? http://imgur.com/HCM50E \t 如果不希望它爲宏名稱顯示「Auto_Open」,則需要對代碼的位置以及子例程和事件處理程序的使用進行一些更改。此外,你提到「循環」,但在你的問題中沒有任何地方你真的描述你如何期待它循環,什麼會終止循環? –

+2

爲什麼不把宏分配給一個按鈕而不是'Auto_Open'?這樣,只需按下按鈕,宏就可以再次運行 – tigeravatar

回答

0

這是一個超級簡單的方法。這裏的問題是我不確定你使用的是什麼「發電機」,但是每次你重新輸入數據都會丟失。這會循環你想要的許多密碼,並給它們一個退出選項。 (如果密碼無效,也會退出)。

Sub Passwords() 

Dim PWNum As Long 
PWNum = 10 'Set to however many passwords you want to "calculate" 

ActiveSheet.Unprotect ("password") 

For i = 1 To PWNum 
    Range("R1").Value = InputBox("Please input your Number, enter 0 to exit") 
    If Range("R1") = 0 Or Len(Range("R1").Value) <> 5 Then 'Exits Sub if they enter 0 or not 5 digits 
     MsgBox "Invalid Password." 
     Exit Sub 
    ElseIf Range("R1") > 0 Then 
     MsgBox "Your password is: " & Range("R2").Value 
    End If 
Next i 

ActiveSheet.Protect ("password") 
End Sub