У меня проблема с моим макросом. Я знаю его много кода (sry для этого), но я думаю, что это может быть полезно. Итак, основная вещь, которую я хочу сделать, - принять значение combobox и найти его на другом листе, чтобы получить цену, указанную в следующем столбце. легко до сих пор, но имя im, поиск которого не уникально в базе данных. один им в поисках только определяется неоспоримым частью правильного именованного диапазона (т.е. EngineMercedesDiesel)Excel VBA Named Range с динамическим созданным именем
Function getprice(Matrix As Range, name As String)
Dim i As Integer
Dim row As Variant
Dim col As Variant
Dim price As Variant
'loop to finde inside the range the name im looking for
For i = 1 To Matrix.Rows.Count
If Matrix.Cells(i, 1).Value = name Then
row = Matrix.Cells(i, 1).Address(RowAbsolute:=True)
col = Matrix.Cells(i, 1).Address(ColumnAbsolute:=True)
price = Tabelle2.Cells(row, col + 1).Value
Exit For
Next
getprice = price
End Function
Private Sub cbschaltung_Change()
Dim go As Range
Dim handle As String
'from here it builds the name i.e. EngineMercedesDiesel an there is a Named range with the same titel outside VBA
teil = Range("A4").Value
hersteller = Range("B3").Value
handle = cbschaltung.Value
If checkboxel.Value = True Then
c = checkboxel.Caption
Set go = teil & hersteller & c 'storing to the variable go, here ocures the error
Tabelle3.Range("C4").Value = getprice(go, handle)
ElseIf checkboxmech.Value = True Then
c = checkboxmech.Caption
Set go = teil & hersteller & c
Tabelle3.Range("C4").Value = getprice(go, handle)
End If
End Sub
Я прыгаю вы можете помочь мне, и (надеюсь) у вас есть простой ответ для меня
Вы можете передать правильный именованный диапазон в качестве другого аргумента в функцию? Если это так, я думаю, что код очень легко обновить в этом случае. –
sry Я не понимаю, что вы имеете в виду под «другим аргументом»!? проблема в том, что даже если я набираю имя непосредственно в функцию, он также не работает, потому что он не знает, как это получается. – Quantum
Я вижу, что вы получили свой ответ, но я предлагал передать имя диапазон в исправление. Поэтому вместо использования двух аргументов в «Матрице» и «имени» вы можете добавить третий аргумент для именованного диапазона. В любом случае, вы получили то, что вам нужно :) –