【发布时间】:2016-04-29 06:12:21
【问题描述】:
我编写了 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
结束子
【问题讨论】: