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