【问题标题】:Excel Add-in with some info stored存储了一些信息的 Excel 加载项
【发布时间】:2015-09-02 01:44:51
【问题描述】:

我在 Excel 中创建了一个 UserForm1 并将其保存为加载项。此加载项工作正常,但它不存储我需要的一些数据(不将其存储在本身而不是在打开的 excel 中)。我必须在单元格 A1 和 A2 中存储一些信息(在 A1 用户名中,在 A2 今天的日期中)。

当我运行这个加载项时,UserForm1 不包含这些值。

有什么方法可以存储用户名并获取更新日期?

这是 UserForm1 的代码:

Private Sub UserForm1_Initialize()    
Me.DocumentName.Text = ActiveWorkbook.FullName
DocumentName.Visible = False

TextBoxDate.Value = Worksheets("Sheet1").Cells(2, "A").Value
TextBoxDate.Value = CDate(TextBoxDate.Value)

UserName.Visible = False
Userform1.UserName.Text = CStr(Range("A1").Value)

'If A1 is empty pops up a UserRegister form
If UserName = "" Then 
UserRegister.Show
End If    
End Sub

用户注册表格代码:

Private Sub UserName_Change()
Sheets("Sheet1").Range("A1") = UserName.Text
End Sub

' I want to store the UserName, so the user does not have to enter it every single time
Private Sub CommandButtonGO_Click()
ThisWorkbook.Save 
Unload Me
End Sub

要获取日期,我只需在单元格 A2 中使用公式 =TODAY()。我知道还有其他方法,但我发现这个方法很简单。

【问题讨论】:

  • 使用ThisWorkbook.Worksheets("Sheet1").Cells(2, "A").ValueThisWorkbook.Worksheets("Sheet1").Range("A1").ValueThisWorkbook.Sheets("Sheet1").Range("A1").Value。如果要存储用户名更改日期,则应删除公式并将值设置在 Private Sub UserName_Change()

标签: vba excel userform office-addins


【解决方案1】:

你可以试试这个吗?

用户表单用户表单1

Private Sub UserForm1_Initialize()
    Me.DocumentName.Text = ActiveWorkbook.FullName
    DocumentName.Visible = False

    TextBoxDate.Value = ThisWorkbook.Worksheets("Sheet1").Range("A2").Value
    'TextBoxDate.Value = CDate(TextBoxDate.Value)

    UserName.Visible = False
    UserForm1.UserName.Text = ThisWorkbook.Worksheets("Sheet1").Range("A1").Value

    'If A1 is empty pops up a UserRegister form
    If Len(UserName.Text) = 0 Then
        UserRegister.Show
    End If
    Debug.Print "Name: " & ThisWorkbook.Worksheets("Sheet1").Range("A1").Value
    Debug.Print "Date: " & ThisWorkbook.Worksheets("Sheet1").Range("A2").Value
End Sub

用户表单用户注册

Private Sub UserName_Change()
    CommandButtonGO.Enabled = Not (UserName.Text = ThisWorkbook.Worksheets("Sheet1").Range("A1").Value)
End Sub

' I want to store the UserName, so the user does not have to enter it every single time
Private Sub CommandButtonGO_Click()
    ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = Trim(UserName.Text)
    ThisWorkbook.Worksheets("Sheet1").Range("A2").Value = Now
    ThisWorkbook.Save
    Unload Me
End Sub

Private Sub UserRegister_Initialize()
    UserName.Text = UCase(Environ("USERNAME"))
End Sub

【讨论】:

  • 还是不行,好吧,我想我得另找办法了。
  • 它适用于我在 Win7x64 上的 Excel 2010,除非您将此数据存储在 AddIn 文件以外的其他工作簿中。
【解决方案2】:

好吧,我想出了我该怎么做。

为了获取用户名,我使用了这里的代码:Getting computer name using VBA(它还说明了如何在那里获取用户名)

为了获取当前的进入日期,我只是将输出代码更改为:

 ActiveCell.Offset(1, 0).Select 'Date column A
 ActiveCell.Value = Date

它会在我的 LOGfile excel 中输出当前日期。

非常感谢您的帮助 =)

【讨论】:

  • 简单地获取用户名有一个更简单的代码:Application.UserName
猜你喜欢
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多