Excel Userform with Textbox,如何切换文本框

时间:2015-09-29 15:44:04

标签: excel vba excel-vba userform

目的:单击范围中的单元格(范围:列表K:在Excel工作表上的K)。单击K列中的特定单元格后,userform将使用以下代码弹出单元格值:

    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,并查看单元格的值在我的用户表单上动态更改。这可能吗?如果需要澄清,请告诉我。

3 个答案:

答案 0 :(得分:0)

只需将两个命令按钮添加到用户表单即可。

将其中一个按钮命名为cmdNext,并为其添加标题"下一步"。

将另一个按钮cmdPrev命名为"上一页"。

然后,在userform代码模块中,放置以下例程:

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 ...

答案 1 :(得分:0)

完美,谢谢!

我也发现使用Offset也以这种方式为我工作。但是我不确定我是否通过这样做打破了任何惯例。

Private Sub CommandButton1_Click()
ActiveCell.Offset(-1).Activate
End Sub

Private Sub CommandButton2_Click()
ActiveCell.Offset(1).Activate
End Sub

答案 2 :(得分:0)

有可能,但我会为此创建另一个程序。您可以做的是在userform&中声明一个公共变量。设置它等于目标范围。然后,您可以在每次单击按钮时从用户窗体调用另一个过程,并在每次单击后重新定义所选范围。

因此,在用户表单的顶部执行以下操作:

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