我寫了彈出輸入框然後打印範圍的vba代碼。如果用戶按下「取消」按鈕,我想停止代碼。到目前爲止,無論用戶採取什麼行動,它都會打印出來,並浪費大量紙張。下面是代碼:如何在用戶取消輸入框後停止vba
Sub Form()
ThisWorkbook.Sheets("FAQs").Activate
ActiveSheet.Range("A1048306").Select
ActiveCell.FormulaR1C1 = InputBox("SrNo1")
ThisWorkbook.Sheets("FAQs").Activate
ActiveSheet.Range("B1048306").Select
ActiveCell.FormulaR1C1 = InputBox("SrNo2")
ThisWorkbook.Sheets("FAQs").Activate
ActiveSheet.Range("C1048306").Select
ActiveCell.FormulaR1C1 = InputBox("SrNo3")
ThisWorkbook.Sheets("FAQs").Activate
ActiveSheet.Range("D1048306").Select
ActiveCell.FormulaR1C1 = InputBox("SrNo4")
ThisWorkbook.Sheets("FAQs").Activate
ActiveSheet.Range("E1048306").Select
ActiveCell.FormulaR1C1 = InputBox("SrNo5")
Columns("A:D").EntireColumn.Hidden = False
Range("A1048308:B1048359").PrintOut
Columns("A:D").EntireColumn.Hidden = True
ActiveSheet.Range("A1").Select
ThisWorkbook.Sheets("Spends Tracker").Activate
ActiveSheet.Range("A1").Select
End Sub
編輯:
這是我的新代碼不更新單元A1048306但仍與VBA和更新細胞繼續B1048306,C1048306,D1048306,E1048306並打印範圍。
Sub Form()
Dim strVale As String
Dim ws As Excel.Worksheet
Set ws = ActiveWorkbook.Sheets("FAQs")
strVale = InputBox("SrNo1")
If strVale = vbNullString Then
MsgBox ("User canceled!")
ThisWorkbook.Sheets("Spends Tracker").Activate
ActiveSheet.Range("A1").Select
Exit Sub
Else
'Here we can use the objects range to set the formula.
ws.Range("A1048306").FormulaR1C1 = strValue
End If
ws.Range("B1048306").FormulaR1C1 = InputBox("SrNo2")
ws.Range("C1048306").FormulaR1C1 = InputBox("SrNo3")
ws.Range("D1048306").FormulaR1C1 = InputBox("SrNo4")
ws.Range("E1048306").FormulaR1C1 = InputBox("SrNo5")
ws.Columns("A:D").EntireColumn.Hidden = False
ws.Range("A1048308:B1048359").PrintOut
ws.Columns("A:D").EntireColumn.Hidden = True
ActiveSheet.Range("A1").Select
ThisWorkbook.Sheets("Spends Tracker").Activate
ActiveSheet.Range("A1").Select
結束子
非常感謝! – user1778266
很高興幫助。繼續學習,讓SO社區知道什麼時候需要指導。 – MatthewD
嗨馬修,我還有一個問題。我玩了一下代碼。現在發生的情況是,如果用戶在第一個框中輸入任何值,則它將進入下一個框,而不更新單元格「A1048306」。 – user1778266