Private Sub CommandButton1_Click()
...
Set wb = Workbooks.Open(Filename:="C:\book1.xls")
If MsgBox("Please Review the Transmittal sheet, if satisfied click Yes to send, No to cancel." & vbCrLf & "Transmittal Number: " & Transm, vbYesNo) = vbNo Then
...
End Sub
问题是这样,我试图从另一个工作簿中打开一个工作簿。第二个工作簿打开但仅限于某一点 - 屏幕是白色的,好像它正在等待某些事情完成。
我的代码移动到msgbox提示符的下一行,一旦我选择是或否并且子例程完成,第二个工作簿然后打开完全显示其数据。在子例程中调用时,它不能正常打开,而不是在子例程完全执行
之下任何想法为什么?
总而言之,我正在尝试找出以下方案的解决方案。用户打开Excel工作簿,单击打开用户表单的工作表上的按钮。用户在组合框中选择一些信息,并根据这些选择,用相关数据填写excel表。填充后,用户单击按钮以根据Excel工作簿中的信息生成报告。在发送之前,用户必须检查并确认excel工作簿上的数据是否正确,因此系统会提示他们使用msgbox执行此操作 - 如果数据正确则单击是,否则单击否。但是使用msgbox和用户表单,他们无法访问excel工作簿。我对此的想法是打开一个新工作簿并从当前工作簿中复制数据,允许用户以这种方式查看它。也许你有更好的方法来做到这一点。
请注意,原始代码不是我的,所以我只修复错误,这个特殊的错误是由于用户表单和msgbox,用户无法专注于excel工作表。
吉姆
答案 0 :(得分:0)
不确定您的确切问题是什么,但是如果要在“阅读”表单后提示是/否:
宏#1(位于VB编辑器的“Thisworkbook”中):
Private Sub Workbook_Open()
Sheets("Transmittal sheet").Activate 'or whatever the sheet's name
End Sub
这将强制用户在打开工作簿时在屏幕上显示此工作表。 接下来,宏#2(位于“传递表”(表X))''再次出现任何表单名称/编号:
Private Sub Worksheet_Deactivate()
Set wb = Workbooks.Open(Filename:="C:\book1.xls")
If MsgBox("Please Review the Transmittal sheet, if satisfied click Yes to send, No to cancel." & vbCrLf & "Transmittal Number: " & Transm, vbYesNo) = vbNo Then
End Sub
当用户试图离开工作表时,这将提示。另一种方法是将第二个宏放在workbook_beforeClose下,取决于情况如何。如果你能澄清你想要达到的目标,那就更好了。
答案 1 :(得分:0)
我无法找到合适的解决方案,msgbox似乎完全锁定了excel,我也无法查看新的工作表。
因此我想出的工作是将当前工作表导出为PDF并显示它。
Dim pdfFile As String
pdfFile = Get_Temp_File_Name(sExtensao:="pdf")
ThisWorkbook.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=pdfFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
' Allow time for PDF to be created and loaded
Application.Wait (Now + TimeValue("0:00:10"))
GoTo PreviewSkip
TrapPreview:
MsgBox Err.Description
PreviewSkip:
If MsgBox(...
我还使用Excel Tilte Set中的代码生成带有pdf扩展名的临时文件名。
感谢大家的投入。 吉姆