我目前正在为一个拥有大量硬盘驱动器的小型建筑物开发数据库,到目前为止,我所制造的系统与我的雇主所希望的完全相同。
我目前的问题是使用宏登录并注销每个硬盘驱动器的一些VBA编码,硬盘驱动器有一行,每行都有一个“签入”和“签出”按钮。目前,编码适用于这两个按钮,但我必须为每个按钮写出“签入”和“签出”的代码。
有没有办法将按钮的位置转换为字符串,然后将其自身添加到编码中,我可以放入某种类型的数组,为我自动定位每个按钮的输出?
宏是一个简单的.Show
语句。
我的excel表如下图所示。大多数当前的单元都使用公式进行编程,因为这个系统需要对不太熟练的计算机用户进行相当自动化。
修改
点击按钮后,我的姓名缩写被添加到当前时间/日期的结尾。这需要在许多按钮上发生,所有结果都在不同的单元格中。
答案 0 :(得分:1)
我的建议是避免使用按钮,而是覆盖工作表的SelectionChanged事件处理程序。将按钮更改为格式化单元格,单击该单元格将执行所需的操作。
首先,配置UserForm以返回值。一种方法是将以下代码放入UserForm的代码隐藏中:
Public Property Get Initials() As String
Initials = txtInitials.Text
End Property
Public Property Let Initials(ByVal sInitials As String)
txtInitials.Text = sInitials
End Property
Private Sub btnOk_Click()
Me.Hide
End Sub
接下来,将以下代码添加到Sheet1
:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sInitials As String
Dim sDate As String
Dim sTime As String
Dim frmInitials As InitialsForm
If Target.Column = 13 Then
Set frmInitials = New InitialsForm
frmInitials.Show
sInitials = frmInitials.Initials
Unload frmInitials
sDate = Date
sTime = Time
Cells(Target.Row, 6).Value = sDate + " / " + sTime + " " + sInitials
End If
End Sub
当用户点击第13列中的单元格(M - " Check Out")时,将显示一个用户表单,询问用户的姓名首字母。一旦他们输入并按下OK按钮,首字母将被添加到时间戳的末尾并插入到同一行的第6列(F)中。