【问题标题】:Repeat macro after UserForm Input用户窗体输入后重复宏
【发布时间】: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


【解决方案1】:

通过对插入按钮使用以下代码:

Private Sub Insert_Click()

   Sheets("Data").Range("C27").Value = TestLocation.Value
   Auto_Open
End Sub

只要您在模块中有 Auto_Open 代码,该代码就可以工作(经过测试)。

如果您将 Auto_Open 子放在 ThisWorkbook 中,则将其移动到模块中。

然后在 ThisWorkbook 中使用以下代码:

Private Sub Workbook_Open()
    Auto_Open
End Sub

还有:

Case "Location1", "Location2", "Location1", "Location4"

应该是:

Case "Location1", "Location2", "Location3", "Location4"

【讨论】:

  • 谢谢!效果很好。是的,我让一位同事检查了它,他找到了它。有第二双眼睛真好。
  • 很高兴能帮上忙 :)
猜你喜欢
  • 1970-01-01
  • 2015-11-09
  • 1970-01-01
  • 1970-01-01
  • 2018-12-17
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多