首页 > 解决方案 > 用户窗体和选择单元格值

问题描述

只是在玩用户表单。使用它们很新。创建了一个非常简单的用户表单,可以找到我输入的两个值之间的百分比变化。(见下图)。我只是想更进一步,我想知道如何根据我选择的 Excel 单元格输入值。所以在这个例子中,如果我选择 K6,则值 15 输入当前年份,如果我随后单击 K8,则值 10 输入基准年)。希望这是有道理的,让我知道这是否可能。谢谢。

当前代码....

TextBox3_Change()
TextBox3.Value = Format((Val(TextBox1.Value) - Val(TextBox2.Value)) / Val(TextBox2.Value), "#0.00%")

在此处输入图像描述

标签: excelvba

解决方案


与其单击,不如在UserForm_Initialize()事件中加载这些文本框中的值?就像是

Private Sub UserForm_Initialize()
    TextBox1.Value = Sheets("Sheet1").Range("K6").Value2
End Sub

如果您真的想选择一个单元格(在显示用户表单之后)然后填充文本框,那么是的,这也是可能的。这是一个例子

出于演示目的,我将填充 1 个文本框。假设我们的用户表单看起来像这样。注意,我CommandButton1在文本框旁边添加了一个。我把标题改成了...。我们将使用Application.InputBoxwithType:=8以便用户可以选择一个范围。

在此处输入图像描述

接下来将此代码粘贴到用户表单代码区域

Option Explicit

Private Sub CommandButton1_Click()
    Dim rng As Range
    
    On Error Resume Next
    '~~> Prompt user to select range
    Set rng = Application.InputBox(Prompt:="Select the range", Type:=8)
    On Error GoTo 0
    
    '~~> Check if the user selected a range
    If Not rng Is Nothing Then
        '~~> Check if the range is single cell or not
        If rng.Columns.Count > 1 Or rng.Rows.Count > 1 Then
            MsgBox "Select single cell"
            Exit Sub
        End If
        TextBox1.Text = rng.Value2
    End If
End Sub

示范

在此处输入图像描述


推荐阅读