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