Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打开用户表单时编辑excel文件_Excel_Vba_Excel 2016 - Fatal编程技术网

打开用户表单时编辑excel文件

打开用户表单时编辑excel文件,excel,vba,excel-2016,Excel,Vba,Excel 2016,我的实际情况是: 我打开一个excel文件 单击一个补码,即a .XLA,这个XLA打开一个用户窗体 然后我在工作的几个小时内填写这个用户表单 问题是,有时我需要编辑前几天的数据,但我需要关闭用户表单,并且我已经填写的所有信息都会丢失 我试过所有这些: 在userform中插入一个命令按钮来隐藏它,但是当我从补码中重新加载它时,一切都丢失了 在userform中插入一个命令按钮以隐藏它,并放置一个60秒计时器以再次显示它,但我无法编辑excel 在userform中插入带有计时器的命令按钮,并使

我的实际情况是:

  • 我打开一个excel文件
  • 单击一个补码,即a .XLA,这个XLA打开一个用户窗体
  • 然后我在工作的几个小时内填写这个用户表单
  • 问题是,有时我需要编辑前几天的数据,但我需要关闭用户表单,并且我已经填写的所有信息都会丢失

    我试过所有这些:

  • 在userform中插入一个命令按钮来隐藏它,但是当我从补码中重新加载它时,一切都丢失了
  • 在userform中插入一个命令按钮以隐藏它,并放置一个60秒计时器以再次显示它,但我无法编辑excel
  • 在userform中插入带有计时器的命令按钮,并使用ShowModal属性,如下所示:
  • Private子命令按钮2\u单击()
    暗暂停时间、开始、结束、总时间
    如果(MsgBox(“Pulsa Yes para editar la hoja a mano”,4))=vbYes,则
    Application.ScreenUpdating=True
    UserForm1.Hide
    UserForm1.showfalse
    暂停时间=10'设置持续时间。
    开始=计时器“设置开始时间。
    定时器<启动+暂停时间时执行
    DoEvents对其他流程的产量。
    环
    完成=计时器
    UserForm1.Hide
    UserForm1.Show
    Application.ScreenUpdating=False
    其他的
    终点
    如果结束
    端接头
    
  • 在开始时直接将showmodel属性设置为false,但它根本不显示
  • 有人能帮我吗?我现在有点迷路了


    提前感谢

    尝试
    UserForm1.Show 0
    ,它将窗体显示为无模式,并允许您在打开时访问应用程序的其他部分-注意:userform不会显示在任务栏上(默认情况下-您需要对其进行编码以使其显示)因此,它很容易在应用程序窗口后面丢失。这是否回答了您的问题?您可以在表单中添加暂停和恢复功能。“暂停”应该将您的表单上的所有控件的当前值保存在临时表或文档属性中,或者作为XLA中的全局变量保存。然后,您可以允许用户关闭表单。UserForm_Initialize中的“resume”选项需要识别暂停状态的存在,并相应地填充控件。做这一切的难度很大程度上取决于你身体的结构。如果它主要是简单的控件,那么可以通过几个相当简单的循环来完成。
    Private Sub CommandButton2_Click()
    
    Dim PauseTime, Start, Finish, TotalTime
    If (MsgBox("Pulsa Yes para editar la hoja a mano", 4)) = vbYes Then
        Application.ScreenUpdating = True
        UserForm1.Hide
        UserForm1.Show False
        PauseTime = 10    ' Set duration.
        Start = Timer    ' Set start time.
        Do While Timer < Start + PauseTime
            DoEvents    ' Yield to other processes.
        Loop
        Finish = Timer
        UserForm1.Hide
        UserForm1.Show
        Application.ScreenUpdating = False
    Else
        End
    End If
    
    End Sub