【问题标题】:VBA - Based on User Input - look up value in tableVBA - 基于用户输入 - 在表中查找值
【发布时间】:2017-05-08 14:27:11
【问题描述】:

我创建了一个表单,要求输入两个用户输入,即站点位置和 sku。站点位置是一个下拉菜单,SKU 是一个文本框。在它下面有一个文本框,我想在用户点击“我的价格是多少?”后根据用户输入填充该文本框。按钮。user form

我有一个价格矩阵,其中 B 列中的 SKU 和第 1 行顶部的站点及其各自的价格在矩阵中(列 D-H)。我附上了表格的样本。请注意,“SKU”和“站点”标题不会出现在我的实际矩阵中。

pricing table

我需要帮助编码“我的价格是多少?”用户表单中的按钮。

我觉得好像我需要一个使用某种查找的 if 语句,但我对如何启动代码有点迷茫。

【问题讨论】:

    标签: vba matrix user-input lookup userform


    【解决方案1】:

    这是你必须做的:

    • 从站点字段中读取值;
    • 从SKU字段读取值;
    • 使用以下公式在“您的价格”字段中显示匹配项:

      WorksheetFunction.Index(Range,site field, sku field)

    更多关于 WorksheetFunction.Index 的信息在这里: https://msdn.microsoft.com/en-us/library/office/ff197581.aspx

    【讨论】:

      【解决方案2】:

      你需要在行和列上独立使用Application.Match,然后得到对应的单元格。请尝试以下代码,但将控件名称(txtSku、cmbSite)和工作表代码名称(mySheet)替换为您的。

      Sub WhatsMyPrice_Click()
        Dim rowNum, colNum
        rowNum = Application.Match(txtSku.Value, MySheet.Range("B:B"), 0)
        If IsError(rowNum) Then MsgBox "SKU not found": Exit Sub
        colNum = Application.Match(cmbSite.Value, MySheet.Rows(2), 0)
        If IsError(rowNum) Then MsgBox "Site not found": Exit Sub
        txtPrice.Value = MySheet.Cells(rowNum, colNum).Value2
      End Sub
      

      【讨论】:

      • rowNum 和 colNum 是否需要声明为字符串?用户可以输入数字、带小数的数字或带字母的数字。我在您的代码的第二行收到一个错误,“rowNum=...”我将文本框标记为您的文本框,MySheet 更改为 AllSites,并且工作表上的范围是“A:A”。'
      • @Melissa rowNum 和 colNum 声明为 Variant。基本上它们是整数,但Application.Match 可能会返回错误代码。至于其他参数,它们是从控件中读取的,它们可以是任何东西,数字或字符串。您可能希望使用 CLng(txtSku.Value) 将站点编号强制为整数。
      • 我得到了错误,通过输入:rowNum = Application.WorksheetFunction.Match(txtSKU.Value, Worksheets("AllSites").Range("A:A) "), 0) 但现在我遇到了 colNum 行代码的问题。我目前有它: colNum = Application.WorksheetFunction.Match(cbxSite.Value, Worksheets("AllSites").Range("C:G"), 0) 由于有 5 个站点,因此范围必须包括五列和根据选择正确的站点匹配价格?这就是 application.match 的作用?我从来没有使用过这个功能,所以我不熟悉它的功能。
      猜你喜欢
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      相关资源
      最近更新 更多