Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mit VGA in Intelligente Tablle Überschrift finden

Mit VGA in Intelligente Tablle Überschrift finden
01.05.2024 14:07:28
DerUschi
Nach dem das heute morgen schon so toll mit den Antworten von euch Profis geklappt hat, habe ich wieder eine neue Frage.

Ich nutze Diesen VGA Befehl, um mir ein Textfeld nach einer Zelle aus einer Tabelle zu benennen:
Me.Parameter01L.Caption = .DataBodyRange(Zeile, 2)

Wobei ich die "Zeile" schon über diese Funktion bestimmt habe:

Dim tbl As ListObject
Dim FoundCell As Range
Dim LookupValue As String

'Lookup Value
LookupValue = "ID-123"

'Store Table Object to a variable
Set tbl = ActiveSheet.ListObjects("Table1")

'Attempt to find value in Table's first Column
On Error Resume Next
Set FoundCell = tbl.DataBodyRange.Columns(1).Find(LookupValue, LookAt:=xlWhole)
On Error GoTo 0

'Return Table Row number if value is found
If Not FoundCell Is Nothing Then
MsgBox "Found in table row: " & _
tbl.ListRows(FoundCell.Row - tbl.HeaderRowRange.Row).Index
Else
MsgBox "Value not found"
End If


Jetzt würde ich auch die Spalte noch gerne über eine Funktion bestimmen, damit ich in meiner Ausgangstabelle zur Not weitere Spalten einfügen kann, ohne das ich alles permanent ändern muss.
Die Ausgangstabelle sieht so aus:
Parameter1|Parameter2|PArameter3|Prarameter.......

Ich würde also gerne nach dem "Parameter" suchen.

Es ist quasi das Äquivalent zu:
Index(Ergbnismatrix;Vergleich(Suchparameter1;Suchmatrix1;0);Vergleich(Suchparameter2;Suchmatrix2;0))

Ich hoffe ihr könnt mir folgen ;)

Ich hoffe auch mal, dass die Frage nicht zu trivial ist, denn ich fange gerade erst an, mich in VGA einzuarbeiten ;)

Mfg
Dirk
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VGA in Intelligente Tablle Überschrift finden
01.05.2024 14:08:44
DerUschi
JAJAJAJA
VBA!!!
Ich weiß!!!
AW: Mit VGA in Intelligente Tablle Überschrift finden
01.05.2024 15:30:16
Alwin Weisangler
Hallo Dirk,

du meinst sicherlich dann so was:


'Parameter 1 und 2 benennen
For i = 1 To 2
If .DataBodyRange(Zeile, 2) = "" Then
Controls("Parameter0" & i & "L").Visible = False
Controls("Parameter0" & i & "T").Visible = False
Else
Controls("Parameter0" & i & "L").Visible = True
Controls("Parameter0" & i & "T").Visible = True
Controls("Parameter0" & i & "L") = .DataBodyRange(Zeile, i + 1)
End If
Next i


Gruß Uwe
Anzeige
AW: Mit VGA in Intelligente Tablle Überschrift finden
01.05.2024 15:42:52
DerUschi
Hallo Alwin,
erst einmal danke für deine Antwort.
Die hilft mir sogar wirklich weiter, d ich damit ja meinen Code optimieren kann.
Bisher steht der Block 10 mal da, da ich 10 Parameter habe.
Aber so ganz trifft es das noch nicht.
Denn die Fett geschriebenen "2" ist die 2. Spalte in der Intelligenten Tabelle.
Da ist also die 2 fest drin verdrahtet.
Wenn ich aber jetzt zwischen dem 1. und 2. ParameterSpalte noch n Spalten einfüge, passt die Ziffer "2" nicht mehr und mit der for i Funktion komme ich da auch nicht weiter.
Ich suche halt so etwas, was in den Überschriften nach "Parameter2" sucht und mir die Spalte als Zahl zurück gibt.

Beispiel:
Spalte1 |Spalte2 |Spalte3 |Spalte4 |Spalte5 |
____________|____________|____________|_____________|____________|
Parameter1|Parameter2|PArameter3|PArameter4|Parameter5

Spalte1 |Spalte2 |Spalte3 |Spalte4 |Spalte5 ||Spalte6 |
____________|____________|____________|_____________|____________|____________|
Parameter1| Neu |Parameter2|PArameter3|PArameter4|Parameter5



Also, falls du dafür auch noch einen Tipp hast, immer her damit ;)
Mfg
Dirk

Anzeige
AW: Mit VGA in Intelligente Tablle Überschrift finden
01.05.2024 15:49:17
ralf_b
es wäre übrigens klug die Parameter auch in der Tabelle so zu bezeichnen wie du sie in der Userform benannt hat.
hier habe ich ein Replace() einfügen müssen damit es passt.
Option Explicit sollte immer ganz oben stehen im Codebereich
Option Explicit


Private Sub BauteilArtT_Change()
'Die Parameter auslesen und Benennen
'Zeile suchen und als Variable deklarieren
Dim tbl As ListObject
Dim Ctrl As Object
Dim indx
Dim sval$

'Abbruch wenn keine Auswahl in Listbox
If BauteilArtT.ListIndex = -1 Then Exit Sub

'Store Table Object to a variable
Set tbl = Tabelle1.ListObjects(1)


'Attempt to find value in Table's first Column
indx = Application.Match(BauteilArtT, tbl.ListColumns(1).DataBodyRange, 0)

'Abbruch wenn kein Fund
If Not IsNumeric(indx) Then Exit Sub


'Schleife über Controls
For Each Ctrl In Me.Controls
If Ctrl.Name Like "Parameter*" Then
sval = getval(indx, Replace(Left(Ctrl.Name, 11), "0", ""))
If sval = "" Then
Ctrl.Visible = False
Else
Ctrl.Visible = True
If TypeName(Ctrl) = "Label" Then Ctrl.Caption = sval
End If
End If
Next

End Sub


Function getval(indx, sName) As String

Dim fund

With Tabelle1.ListObjects(1).ListRows(indx)
'Attempt to find value in Table's first Column
fund = Application.Match(sName, .Parent.HeaderRowRange, 0)
getval = IIf(IsNumeric(fund), .Range(fund).Value, "")
End With

End Function
Anzeige
AW: Mit VGA in Intelligente Tablle Überschrift finden
01.05.2024 16:17:28
DerUschi
WOW,
vielen Dank für die Lösung.
Wenn ich nachher am Rechner mich genauer darum kümmern kann, setzte ich das gleich mal um.
Auch wenn das jetzt recht dreist klingen mag, da ich ja mit VBA erst anfange, könntest du mir etwas genauer erklären was da genau gemacht wird?
Ich kann das echt noch nicht wirklich "lesen" was da gemeint ist.
Mfg
Dirk
Anzeige
AW: Mit VGA in Intelligente Tablle Überschrift finden
01.05.2024 20:06:50
DerUschi
Soooooo...
ich habe den Code jetzt in meine Beispieldatei kopiert und da läuft es SUPER!
Wenn ich ihn jedoch in meine Projektdatei kopiere und dort Tabelle1 durch Tabelle4 ersetze, bekomme ich ein Laufzeitfehler 5 ungültiger PRozessaufruf.
Hier hat er dann etwsa zu meckern:

Function getval(indx, sName) As String

Dim fund

With Tabelle4.ListObjects(1).ListRows(indx)
'Attempt to find value in Table's first Column
fund = Application.Match(sName, .Parent.HeaderRowRange, 0)
getval = IIf(IsNumeric(fund), .Range(fund).Value, "")
End With

End Function

Was mach ich falsch?
Mfg
Dirk
Anzeige
AW: Mit VGA in Intelligente Tablle Überschrift finden
02.05.2024 00:30:24
ralf_b
die function getval() sucht in der Headerrowrange, das ist die Zeile mit den Überschriften nach dem passenden Parameter und gibt beim Fund den Wert zurück und wenn kein Fund einen leeren String. das muß man nicht in einer function auslagern aber manchmal hilft das bei der Übersichtlichkeit.
leider ist der Kommentar noch von der Zeilensuche und somit falsch.
Der Fehler entsteht weil beim innerif (iif) auch der Ausdruck komplett ausgewertet wird und bei einem Fehler in fund somit ein Fehler 5 hochkommt. Das passiert nicht wenn man das if then else mehrzeilig schreibt.
Function getval(indx, sName) As String


Dim fund

With Tabelle4.ListObjects(1).ListRows(indx)
'Attempt to find value in Table's first Column
fund = Application.Match(sName, .Parent.HeaderRowRange, 0)
If IsNumeric(fund) Then
getval = .Range(fund).Value
Else
getval = ""
End If
End With

End Function
Anzeige
AW: Mit VGA in Intelligente Tablle Überschrift finden
02.05.2024 10:18:14
DerUschi
Guten Morgen,
diese Lösung läuft jetzt wirklich super.
Vielen Dank!!!!
AW: Mit VGA in Intelligente Tablle Überschrift finden
01.05.2024 14:17:29
Onur
"Ich hoffe ihr könnt mir folgen ;) " - Nein, nicht wirklich. Du hast alles zu sehr verallgemeinert.
Poste eine Datei und erkläre dort konkret, was GENAU du suchst.
AW: Mit VGA in Intelligente Tablle Überschrift finden
01.05.2024 14:44:50
DerUschi
Hehe das habe ich mir schon fast gedacht....

Ich würde gerne die Fett markierten Stellen Variabel gestallten, dass da nicht eine feste Zahl steht, sondern eine Variable, die nach "Parameter1" Parameter2"... sucht.
Ich möchte in der Tabelle, in der die Variablen stehen, später eventuell Spalten hinzufügen, ohne dass ich dann den gesamten Code ändern muss.

...If .DataBodyRange(Zeile, 2) = "" Then ...
...Me.Parameter01L.Caption = .DataBodyRange(Zeile, 2)...

https://www.herber.de/bbs/user/169190.xlsm

Ich hoffe mit dem Beispiel wird es ersichtlicher.

Mfg
Dirk
Anzeige
AW: Mit VGA in Intelligente Tablle Überschrift finden
01.05.2024 14:17:39
Onur
"Ich hoffe ihr könnt mir folgen ;) " - Nein, nicht wirklich. Du hast alles zu sehr verallgemeinert.
Poste eine Datei und erkläre dort konkret, was GENAU du suchst.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige