Excel 带有文本框的用户表单,如何在文本框范围内切换值
Excel Userform with Textbox, how to toggle through values in range of textbox
目的:单击范围内的单元格(范围:excel 工作表上的第 K:K 列)。单击 K 列中的特定单元格后,用户窗体会使用以下代码弹出单元格值:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("K:K")) Is Nothing Then
Credit_Information.TextBox1.Value = Target.Value
Credit_Information.Show
End If
End Sub
我的问题取决于我点击 K 列的位置,我想在我的用户窗体上使用两个按钮(上一个和下一个)来上下移动 K 列并查看我的单元格的值动态变化用户表单。这可能吗?如果需要任何说明,请告诉我。
只需将这两个命令按钮添加到您的用户表单即可。
将其中一个按钮命名为 cmdNext
并为其添加标题 "Next"。
将另一个按钮命名为 cmdPrev
并为其添加标题 "Previous"。
然后,在用户窗体代码模块中,放置这些例程:
Private Sub cmdNext_Click()
ActiveCell(2).Select
End Sub
Private Sub cmdPrev_Click()
If ActiveCell.Row > 1 Then ActiveCell(0).Select
End Sub
就是这样。
注意:如果需要,您可以添加代码以确保 ActiveCell 在允许新选择之前位于 K 列中:
If ActiveCell.Column = 11 Then ...
完美,谢谢!
我还发现使用 Offset 也以这种方式对我有用。但是,我不确定这样做是否违反了任何约定。
Private Sub CommandButton1_Click()
ActiveCell.Offset(-1).Activate
End Sub
Private Sub CommandButton2_Click()
ActiveCell.Offset(1).Activate
End Sub
这是可能的,但我会为此创建另一个过程。您可以做的是在您的用户表单中声明一个 public 变量并将其设置为等于目标范围。然后您可以在每次单击按钮时从用户窗体调用另一个过程,并在每次单击后重新定义所选范围。
因此,在您的用户表单顶部执行此操作:
Public selected_cell as Range
然后向上按钮:
Private Sub ButtonUp.Click()
If selected_cell.Row < 2 Then Exit Sub
selected_cell.Rows(0).Select
Set selected_cell = selected_cell.Rows(0)
me.TextBox1.Value = selected_cell
End Sub
向下按钮将是:
Private Sub ButtonDown.Click()
selected_cell.Rows(2).Select
Set selected_cell = selected_cell.Rows(2)
me.TextBox1.Value = selected_cell
End Sub
现在让我们像这样编写代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("K:K")) Is Nothing Then
With Credit_Information
Set .selected_cell = target
.TextBox1.Value = Target.Value
.Show
End With
End If
End Sub
目的:单击范围内的单元格(范围:excel 工作表上的第 K:K 列)。单击 K 列中的特定单元格后,用户窗体会使用以下代码弹出单元格值:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("K:K")) Is Nothing Then
Credit_Information.TextBox1.Value = Target.Value
Credit_Information.Show
End If
End Sub
我的问题取决于我点击 K 列的位置,我想在我的用户窗体上使用两个按钮(上一个和下一个)来上下移动 K 列并查看我的单元格的值动态变化用户表单。这可能吗?如果需要任何说明,请告诉我。
只需将这两个命令按钮添加到您的用户表单即可。
将其中一个按钮命名为 cmdNext
并为其添加标题 "Next"。
将另一个按钮命名为 cmdPrev
并为其添加标题 "Previous"。
然后,在用户窗体代码模块中,放置这些例程:
Private Sub cmdNext_Click()
ActiveCell(2).Select
End Sub
Private Sub cmdPrev_Click()
If ActiveCell.Row > 1 Then ActiveCell(0).Select
End Sub
就是这样。
注意:如果需要,您可以添加代码以确保 ActiveCell 在允许新选择之前位于 K 列中:
If ActiveCell.Column = 11 Then ...
完美,谢谢!
我还发现使用 Offset 也以这种方式对我有用。但是,我不确定这样做是否违反了任何约定。
Private Sub CommandButton1_Click()
ActiveCell.Offset(-1).Activate
End Sub
Private Sub CommandButton2_Click()
ActiveCell.Offset(1).Activate
End Sub
这是可能的,但我会为此创建另一个过程。您可以做的是在您的用户表单中声明一个 public 变量并将其设置为等于目标范围。然后您可以在每次单击按钮时从用户窗体调用另一个过程,并在每次单击后重新定义所选范围。
因此,在您的用户表单顶部执行此操作:
Public selected_cell as Range
然后向上按钮:
Private Sub ButtonUp.Click()
If selected_cell.Row < 2 Then Exit Sub
selected_cell.Rows(0).Select
Set selected_cell = selected_cell.Rows(0)
me.TextBox1.Value = selected_cell
End Sub
向下按钮将是:
Private Sub ButtonDown.Click()
selected_cell.Rows(2).Select
Set selected_cell = selected_cell.Rows(2)
me.TextBox1.Value = selected_cell
End Sub
现在让我们像这样编写代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("K:K")) Is Nothing Then
With Credit_Information
Set .selected_cell = target
.TextBox1.Value = Target.Value
.Show
End With
End If
End Sub