Userform仅在首次使用时显示#excel vba

Userform仅在首次使用时显示#excel vba,vba,excel,Vba,Excel,因此,我在excel上制作了一份问卷,在工作簿打开时包含一个userform(当您打开excel时也是如此)。userform让用户选择他想要使用的语言(法语或英语)。我的问题是,我希望userform只在用户第一次打开文件时弹出。因此,他打开文件,选择语言,回答问题并保存文件。如果他/她重新打开文件,我希望他/她不再选择语言 有没有办法让userform只在第一次使用时出现 如果没有,我会考虑在问卷打开时更改某个框中的值,然后将该值链接到userform,这样下次如果该值已更改,它就不会打开。

因此,我在excel上制作了一份问卷,在工作簿打开时包含一个userform(当您打开excel时也是如此)。userform让用户选择他想要使用的语言(法语或英语)。我的问题是,我希望userform只在用户第一次打开文件时弹出。因此,他打开文件,选择语言,回答问题并保存文件。如果他/她重新打开文件,我希望他/她不再选择语言

有没有办法让userform只在第一次使用时出现

如果没有,我会考虑在问卷打开时更改某个框中的值,然后将该值链接到userform,这样下次如果该值已更改,它就不会打开。我也不知道这是否可能

谢谢你的帮助


Vincent

一种常见且简单的方法是使用一个隐藏的工作表,您可以在保存后使用单元格存储值

Private Sub Workbook_Open()
    'Where HiddenSheet is the name of your hidden worksheet
    If ActiveWorkbook.Sheets("HiddenSheet").Cells(1, 1).Value = 0 Then
        'Code to open the form
    End If    
End Sub
一旦用户完成了这个问题,你就可以改变单元格的值,这样它就不会再打开了

ActiveWorkbook.Sheets("HiddenSheet").Cells(1, 1).Value = 1

一种常见且简单的方法是使用一个隐藏的工作表,您可以在保存后使用单元格存储值

Private Sub Workbook_Open()
    'Where HiddenSheet is the name of your hidden worksheet
    If ActiveWorkbook.Sheets("HiddenSheet").Cells(1, 1).Value = 0 Then
        'Code to open the form
    End If    
End Sub
一旦用户完成了这个问题,你就可以改变单元格的值,这样它就不会再打开了

ActiveWorkbook.Sheets("HiddenSheet").Cells(1, 1).Value = 1

我喜欢在要隐藏的工作表中使用此语句

Private Sub Worksheet_Activate()
    If ActiveSheet.Visible Then ActiveSheet.Visible = False
End Sub
基本上,用户可以尝试取消隐藏该工作表,但它会立即再次隐藏该工作表。当然,您仍然需要密码来保护代码,但我发现它有助于防止向用户显示他们不需要担心的信息


我想我会加上这个,因为它似乎与问题的一部分有关。希望能有所帮助。

我喜欢在要隐藏的工作表中使用此语句

Private Sub Worksheet_Activate()
    If ActiveSheet.Visible Then ActiveSheet.Visible = False
End Sub
基本上,用户可以尝试取消隐藏该工作表,但它会立即再次隐藏该工作表。当然,您仍然需要密码来保护代码,但我发现它有助于防止向用户显示他们不需要担心的信息


我想我会加上这个,因为它似乎与问题的一部分有关。希望对您有所帮助。

我认为更好的方法是使用以下方式记录访问该文件的所有用户:

Application.Username() 

功能

然后使用Workbook.Open事件,运行代码以:

  • 循环浏览隐藏工作表上的用户日志
  • 检查日志中是否已经存在当前用户
  • 如果是,则表示该用户不是新用户
  • 如果没有,请获取用户名并添加到日志中
  • 只有没有日期和时间戳的用户名


    这是一种万无一失的方法,其双重好处是保存所有访问过该文件的用户的历史记录。

    我认为更好的方法是使用以下方法保存访问该文件的所有用户的日志:

    Application.Username() 
    

    功能

    然后使用Workbook.Open事件,运行代码以:

  • 循环浏览隐藏工作表上的用户日志
  • 检查日志中是否已经存在当前用户
  • 如果是,则表示该用户不是新用户
  • 如果没有,请获取用户名并添加到日志中
  • 只有没有日期和时间戳的用户名



    这是一种万无一失的方法,其双重好处是保存所有访问过该文件的用户的历史记录。

    填写问卷后,您可以在隐藏的表格中设置一个值。你可以检查这张表的加载值,如果它有值,你就会知道表单以前已经填写过了。是的,好主意,谢谢。你可以在填写问卷后在隐藏的表中设置一个值。你可以检查一下这张表上的值,如果它有值,你就会知道表格已经填好了。是的,好主意,谢谢。好主意。所以HiddeSheet基本上是一个我或用户都无权访问的表?当用户保存文件时,我可以更改该表中A1中的单元格值吗@Alex@petithomme是的,一张可以隐藏和密码锁定的表格。您可以访问它,但用户不会看到或知道它在那里。你可以为任何类型的设置或数据选择任何单元格。哦,太酷了,我想象你在下面写的代码中,工作表的名称是“HiddenSheet”。所以我可以按我想要的方式命名,但在代码中插入正确的名称?@petithome完全正确。最后一个问题@Alex D在你的单元格(1,1)中,第一个表示行或列?是的,好主意。所以HiddeSheet基本上是一个我或用户都无权访问的表?当用户保存文件时,我可以更改该表中A1中的单元格值吗@Alex@petithomme是的,一张可以隐藏和密码锁定的表格。您可以访问它,但用户不会看到或知道它在那里。你可以为任何类型的设置或数据选择任何单元格。哦,太酷了,我想象你在下面写的代码中,工作表的名称是“HiddenSheet”。所以我可以按我想要的方式命名,但在代码中插入正确的名称?@petithome完全正确。最后一个问题@Alex D在您的单元格(1,1)中,第一个问题表示行或列?哦,好的,我会检查它。现在我正在使用“保护工作簿”功能,这样用户在首先删除保护之前就没有访问权限。如果您真的想隐藏工作表,可以将其
    Visible
    属性设置为
    xlSheetVeryHidden
    而不是
    False
    我不知道,很好!哦,好的,我去看看。现在我正在使用“保护工作簿”功能,这样用户在首先删除保护之前就没有访问权限。如果您真的想隐藏工作表,可以将其
    Visible
    属性设置为
    xlSheetVeryHidden
    而不是
    False
    我不知道,很好!