Форма пользователя Excel VBA - VLOOKUP и расчет формы - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть форма с несколькими полями.У меня есть поле в форме, где я бы хотел, чтобы был произведен расчет.Для этого требуется VLOOKUP функции вспомогательного столбца.

В обычной ячейке я могу ввести следующее:

=VLOOKUP(B3&C3&D3,Ins_Price_Tbl,5,0)

Ins_Price_Tbl - таблица данных.

И получите ответ, который я ищу.

В моей форме есть текстовые поля

txtAdjustmentCountYearA - An integer
txtInsurance - A String
txtAdjustmentYearA - A year like 2018
txtAdjustmentCostYearA - The result field

Мне нужно txtAdjustmentCostYearA, чтобы выполнить VLOOKUP, где в этом случаеC3 будет просто равен "Adjustment" или какому-либо тексту, который я наберу, и умножу его на txtAdjustmentCountYearA.Value

Так что у меня потенциально будет что-то вроде:

txtAdjustmentCountYearA.Value, равное 2

txtAdjustmentYearA.Value равно 2018

txtAdjustmentCostYearA равно чему-то вроде:

=VLOOKUP(Me.txtInsurance.Value&"Whatever I type in here"&Me.txtAdjustmentYearA,Ins_Price_Tbl,5,0) * txtAdjustmentCountYearA.Value

1 Ответ

0 голосов
/ 16 декабря 2018

Как можно ближе к вашему ОП

Option Explicit                             ' declaration head of code module

Private Sub CommandButton1_Click()
Dim ws As Worksheet                         ' provide for range reference
Set ws = ThisWorkbook.Worksheets("MySheet") ' <~~ change to your sheet name
Dim searched As String, found As Variant, factor As Double
searched = Me.txtInsurance.Text & ws.Range("C3").value & Me.txtAdjustmentYearA.Text
' use the Application function VLookup instead of worksheetfunction.VLookup
' allowing to ask a IsError condition (variable found has to be of type Variant!)
  found = Application.VLookup(searched, ws.Range("Ins_Price_Tbl"), 5, 0)
' Textbox values are always strings and have to be converted (e.g. to Double)
  If IsNumeric(txtAdjustmentCountYearA.Text) Then factor = CDbl(txtAdjustmentCountYearA.Text)
' Check possible errors before assigning result to textbox (again as String!)
  If Not IsNumeric(found) Or IsError(found) Then
     Me.txtAdjustmentCostYearA.Text = "Nothing found"
  Else
     Me.txtAdjustmentCostYearA.Text = found * factor
  End If
End Sub
...