【发布时间】:2015-08-13 17:48:52
【问题描述】:
打开工作簿时,宏将查看单元格“C27”是否包含以下任何文本:Location1、Location2、Location3 或 Location4。如果他们这样做,那么它将继续按这些位置保存模板的 2 个副本文件。如果没有,那么它将打开一个用户窗体从组合框中选择正确的位置。
如何在用户窗体关闭后重置检查,我在卸载我后尝试调用 Auto_Open 但它没有工作。
宏
Sub Auto_Open()
With Range("B30")
.Value = Time
.NumberFormat = "h-mm-ss AM/PM"
End With
Dim FileName As String
Dim FilePath As String
Dim FileDate As String
Select Case Range("C27").Value
Case "Location1", "Location2", "Location3", "Location4"
FilePath = "C:\Users\aholiday\Desktop\FRF_Data_Macro_Insert_Test"
FileName = Sheets("Data").Range("C27").Text
Application.DisplayAlerts = False
ThisWorkbook.SaveAs FileName:=FilePath & "\" & FileName
Dim FileCopyName As String
Dim FileCopyPath As String
Dim FileTime As String
FilePath = "C:\Users\aholiday\Desktop\Backup"
FileName = Sheets("Data").Range("C27").Text
FileTime = Sheets("Data").Range("B30").Text
ThisWorkbook.SaveAs FileName:=FilePath & "\" & FileName & Space(1) & FileTime & ".xlsx", FileFormat:=xlOpenXMLWorkbook
MsgBox "File was saved! Ready for Next Test, Please Exit."
Case Else
MsgBox "File was not saved, Please Insert The Correct Testing Location"
UserForm.Show
Exit Sub
End Select
Application.DisplayAlerts = True
End Sub
用户表单
Private Sub UserForm_Initialize()
'Empty TestLocation Box
TestLocation.Clear
'Fill TestLocation Box
With TestLocation
.AddItem "Location1"
.AddItem "Location2"
.AddItem "Location3"
.AddItem "Location4"
End With
End Sub
'----------
Private Sub Insert_Click()
Sheets("Data").Activate
Range("C27").Value = TestLocation.Value
End Sub
'--------
Private Sub CloseBox_Click()
Unload Me
End Sub
【问题讨论】:
-
Range("B27")来自哪个工作表? -
我的意思是把它改成 C27,没关系我修好了它,它仍然做同样的事情。如果我使用用户窗体更改它,它的奇怪原因是它可以工作,但如果我用正确的位置打开工作簿,它就不会。
-
ohhhh 我现在明白你在说什么了,等等,让我向宏澄清一下
-
简单的错字,Location1 出现在 case 语句中两次,省略了 location3...我正在测试...我的第二个问题仍未得到解答。
-
好的,试试
Select Case Sheets("Data").Range("C27").Value,因为那是你.Activate用来存储值的工作表。
标签: vba excel userform select-case