我是excel VBA中的菜鸟,所以请理解。
我的任务是将员工的总工作时间有效地输入到工作表中,以最大限度地减少人为错误。所以有三个选项,正常工作时间是490分钟,随着时间的推移是640分钟和用户输入选项,因为有时员工不工作490或640分钟。
所以我创建了一个用户表单,在我的用户表单中,我有正常工作时间和一段时间的输入2选项按钮。我还为用户输入了第三个选项的文本框,以输入特定的工作时间。
因此,我想在单击单元格而不是按钮时打开用户窗体。并将用户表单中的数据输入到选定的单元格中。我可以使用此代码
单击单元格来打开用户窗体Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("H10:I29")) Is Nothing Then
UserForm1.Show
End If
End Sub
我的问题是我不知道如何将用户表单中的数据输入到选定的单元格中。
感谢任何帮助。谢谢。
答案 0 :(得分:0)
在您的UserForm1
:
Button1
,将第一个值应用于所选单元格Button2
,将第二个值应用于所选单元格TextBox1
,您写的是一个不常见的值Button3
,将TextBox1
的值应用于所选单元格在UserForm1
代码中添加:
Private Sub Button1_Click()
Selection.Value = 490
End Sub
Private Sub Button2_Click()
Selection.Value = 640
End Sub
Private Sub Button3_Click()
Selection.Value = TextBox1.Value
End Sub
答案 1 :(得分:0)
假设:
正常时间OptionButton以“NormalTime_OB”
随着时间的推移OptionButton以“OverTime_OB”
以“SpecificTime_TB”命名的特定时间TextBox
ok按钮以“Ok_Btn”命名
您可以在userform代码窗格中尝试以下代码:
Option Explicit
Private Sub Ok_Btn_Click()
Const NORMALHOURS As Long = 490
Const OVERTIMEHOURS As Long = 640
Dim hours As Long
With Me
Select Case True
Case .NormalTime_OB
hours = NORMALHOURS
Case .OverTime_OB
hours = OVERTIMEHOURS
Case Else
hours = GetTextBoxInpt(.SpecificTime_TB)
End Select
If hours > 0 Then
ActiveCell.Value = hours
.Hide
End If
End With
End Sub
Function GetTextBoxInpt(TB As MSForms.TextBox)
Const MINHOURS As Long = 490 '<--| change it to your needs
Const MAXHOURS As Long = 640 '<--| change it to your needs
Dim hours As Long
With TB
If IsNumeric(.text) Then
hours = CLng(.text)
If hours <= MINHOURS Or hours > MAXHOURS Then
MsgBox "You must enter a value between " & MINHOURS & " and " & MAXHOURS, vbExclamation, "Working Time input"
Else
GetTextBoxInpt = hours
Exit Function
End If
Else
MsgBox "You must enter a numeric value", vbExclamation, "Working Time input"
End If
.text = ""
End With
End Function
当您的工作表事件处理程序变为:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("H10:I29")) Is Nothing Then
UserForm1.Show
Unload UserForm1
End If
End Sub