带有文本框的Excel用户窗体,如何切换文本框范围内的值

目的:单击某个范围内的单元格(范围:Excel工作表上的K列:K)。 一旦你点击K列中的特定单元格,用户窗体将使用以下代码popup单元格值:

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,我想在我的用户窗体(上一页和下一页)上使用两个button上下移动K列,并看到我的用户窗体上dynamic更改单元格的值。 这可能吗? 请让我知道是否需要澄清。

只需将两个命令button添加到您的用户窗体。

命名其中一个buttoncmdNext并给它一个“Next”的标题。

将另一个buttoncmdPrev并给它一个“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中,然后再允许新的select:

 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 

这是可能的,但我会为此创build另一个程序。 你可以做的是在你的用户表单中声明一个公共variables,并将其设置为等于目标范围。 然后你可以调用每个button点击userform的另一个过程,每次点击后重新定义选定的范围。

所以,在你的用户表单顶部这样做:

 Public selected_cell as Range 

然后,向上button:

 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 

向下button将是:

 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