Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Werte aus mehreren TB in Tabelle suchen
06.06.2019 07:34:34
Peter
Guten Morgen ihr Excelspezialisten,
mittels einem Makro werden mehrere Daten bei jedem Eintrag in eine Tabelle in eine andere Tabelle eingetragen.
Nun benötige ich eine Lösung, wie es möglich wird die Daten in der anderen Tabelle zu finden und zu markieren.
In einer UF werden in den Textboxen 1, 7, 2, ComboBox1, Testboxen 4, 5, 6, gefüllt aus der ersten Tabelle. In der zweiten Tabelle sollen diese Werte im Bereich der Spalten S bis Y ab Zeile 2 bis letzte beschriebene Zeile gesucht und wenn gefunden markiert werden.
Könnt ihr mir bitte hierbei helfen?
Besten Dank
Gruss
Peter

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Kein Tag ohne Peter.....
06.06.2019 07:49:17
robert
AW: ist dir langweilig?!
06.06.2019 07:51:21
Peter
Hallo Robert,
anstatt so dumme Sprüche zu schreiben, solltest Du Dir ein anderes Hobby aussuchen oder den Leuten, die eine Hilfe in Excel benötigen auch helfen.
Gruss
Peter
AW: Werte aus mehreren TB in Tabelle suchen
06.06.2019 08:36:45
Mullit
Hallo,
im Prinzip geht sowas:
Option Explicit

Private Sub CommandButton1_Click()
Dim objRange As Range, objUnion As Range, objCell As Range
Dim avntControlValues() As Variant
Dim ialngIndex As Long
Dim strFirstAddress As String
With Tabelle2
    Set objRange = .Range(.Cells(2, 19), .Cells(.Cells(.Rows.Count, 19).End(xlUp).Row, 25))
End With
avntControlValues = Array(TextBox1.Value, TextBox2.Value, TextBox4.Value, _
     TextBox5.Value, TextBox6.Value, TextBox7.Value, ComboBox1.Value)
For ialngIndex = 0 To Ubound(avntControlValues)
    If avntControlValues(ialngIndex) <> vbNullString Then
        With objRange
            Set objCell = .Find(What:=avntControlValues(ialngIndex), _
                LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
            If Not objCell Is Nothing Then
                strFirstAddress = objCell.Address
                Do
                    If objUnion Is Nothing Then
                        Set objUnion = objCell
                    Else
                        Set objUnion = Union(objUnion, objCell)
                    End If
                    Set objCell = .FindNext(After:=objCell)
                Loop Until objCell.Address = strFirstAddress
            End If
        End With
    End If
Next
If objUnion Is Nothing Then
  Call MsgBox("Keine Werte gefunden...!", vbExclamation)
Else
  With objUnion
      Call .Parent.Activate
      Call .Select
  End With
  Set objUnion = Nothing
End If
Set objCell = Nothing
Set objRange = Nothing
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Gruß, Mullit
Anzeige
AW: Werte aus mehreren TB in Tabelle suchen
06.06.2019 08:39:01
Peter
Hallo Mullit,
besten Dank für Deine Hilfe. Das schaut sehr gut aus werde ich testen.
Gebe später Bescheid.
Gruss
Peter
AW: Werte aus mehreren TB in Tabelle suchen
06.06.2019 08:50:47
Mullit
Hallo Peter,
alles klar, prima....
Gruß, Mullit
AW: Werte aus mehreren TB in Tabelle suchen
06.06.2019 10:19:46
Peter
Hallo Mullit,
grundsätzlich funktioniert der Code. Ich habe diesen erweitert:
<pre>Private Sub CommandButton1_Click()
Dim objRange As Range, objUnion As Range, objCell As Range
Dim avntControlValues() As Variant
Dim ialngIndex As Long
Dim strFirstAddress As String
With Worksheets("Gesamtbuchungen")
.Activate
Set objRange = .Range(.Cells(2, 13), .Cells(.Cells(.Rows.Count, 13).End(xlUp).Row, 25))
End With
avntControlValues = Array(TextBox8.Value, TextBox1.Value, TextBox2.Value, TextBox4.Value, _
TextBox5.Value, TextBox6.Value, TextBox7.Value, ComboBox1.Value)
For ialngIndex = 0 To UBound(avntControlValues)
If avntControlValues(ialngIndex) <> vbNullString Then
With objRange
Set objCell = .Find(What:=avntControlValues(ialngIndex), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
If Not objCell Is Nothing Then
strFirstAddress = objCell.Address
Do
If objUnion Is Nothing Then
Set objUnion = objCell
Else
Set objUnion = Union(objUnion, objCell)
End If
Set objCell = .FindNext(After:=objCell)
Loop Until objCell.Address = strFirstAddress
End If
End With
End If
Next
If objUnion Is Nothing Then
Call MsgBox("Keine Werte gefunden...!", vbExclamation)
Else
With objUnion
Call .Parent.Activate
Call .Select
End With
Set objUnion = Nothing
End If
Set objCell = Nothing
Set objRange = Nothing
End Sub</pre>
1. Worksheeets("Gesamtbuchungen") da im Test doch nicht Tabelle2
2. Set objRange = .Range(.Cells(2, 13), .Cells(.Cells(.Rows.Count, 13).End(xlUp).Row, 25)) erweitert auf Spalte13 da noch eine zusätzliche Textbox8 hinzukommt.
3. avntControlValues = Array(TextBox8.Value, TextBox1.Value, TextBox2.Value, TextBox4.Value, _
TextBox5.Value, TextBox6.Value, TextBox7.Value, ComboBox1.Value) um TextBox8.value erweitert.
Egal ob mit oder ohne Erweiterung es wird der falsche Wert selectiert.
Es sollen die Werte gemäss Textboxes bzw. Combobox gesucht werden und wenn diese gefunden wurden, dann sollen Werte in der gefundenen Zeile markiert werden. Es werden anstatt nur in konkretem Fall die Zelle T2 die Zellen T2 und T3 markiert.
Richtigerweise soll da die suchten Werte sich in Zeile 2 befinden nur die T2 markiert werden. Ich benötige jedoch, dass nicht nur T2 markiert wird sondern A2 bis Y2.
Kannst Du mir hierbei bitte noch behilflich sein.
Besten Dank
Gruss
Peter
Anzeige
AW: Werte aus mehreren TB in Tabelle suchen
06.06.2019 23:17:15
Mullit
Hallo,
dann lad mal ne Bsp.-mappe mit ein paar Erklärungen hoch, dann kann man sich das anschauen....
Gruß, Mullit
AW: Werte aus mehreren TB in Tabelle suchen
07.06.2019 08:47:12
Peter
Guten Morgen Mullit,
anbei die Datei:https://www.herber.de/bbs/user/130270.xlsm
Auf Tabelle4 habe ich Hinweise gegeben - ich hoffe sie sind verständlich.
Besten Dank
Gruss
Peter
AW: Werte aus mehreren TB in Tabelle suchen
07.06.2019 09:38:36
Peter
Hallo Mullit,
ich habe jetzt mit Deiner Lösung folgendes erfolgreich getestet:
<pre>Private Sub CommandButton1_Click()
Dim objRange As Range, objUnion As Range, objCell As Range
Dim avntControlValues() As Variant
Dim ialngIndex As Long
Dim strFirstAddress As String
With Worksheets("Gesamtbuchungen")
Set objRange = .Range(.Cells(2, 13), .Cells(.Cells(.Rows.Count, 13).End(xlUp).Row, 25))
End With
avntControlValues = Array(TextBox8.Value, TextBox1.Value, TextBox7.Value, TextBox2.Value, ComboBox1.Value, _
TextBox4.Value, TextBox5.Value, TextBox6.Value)
'For ialngIndex = 0 To UBound(avntControlValues)
If avntControlValues(ialngIndex) <> vbNullString Then
With objRange
Set objCell = .Find(What:=avntControlValues(ialngIndex), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
If Not objCell Is Nothing Then
strFirstAddress = objCell.Address
' Do
If objUnion Is Nothing Then
Set objUnion = objCell
Else
Set objUnion = Union(objUnion, objCell)
End If
Set objCell = .FindNext(After:=objCell)
' Loop Until objCell.Address = strFirstAddress
End If
End With
End If
'Next
If objUnion Is Nothing Then
Call MsgBox("Keine Werte gefunden...!", vbExclamation)
Else
With objUnion
Call .Parent.Activate
Call .Select 'ergibt die aktive Zelle - mittels dieser wird u. a. Bereich markiert
Range(ActiveCell.Offset(0, -12), ActiveCell.Offset(0, 12)).Select
End With
Set objUnion = Nothing
End If
Set objCell = Nothing
Set objRange = Nothing
End Sub</pre>
Ich habe For - do und Loop weggelassen.
Dadurch wird die gesuchte Zelle M entsprechende Zeile gefunden und mittels Call .parent.Activate und Call .select die gesuchte Zelle selectiert.
Mittels der von mir eingefügten Zeile: Range(ActiveCell.Offset(0, -12), ActiveCell.Offset(0, 12)).Select wird der gesuchte Bereich von A bis Y selectiert.
Was mir jetzt jedoch noch fehlt ist, wenn sich die Werte in der Textbox bzw. ComboBox ändert.
Wie kann ich dies dann einfügen?
Hast Du hierfür einen Rat?!
Besten Dank
Gruss
Peter
Anzeige
AW: Werte aus mehreren TB in Tabelle suchen
07.06.2019 10:57:45
Peter
Hallo Mullit,
meine Datei funktioniert doch noch nicht.
Ich habe die Tabellen ergänzt um eine weitere Zeile.
Alles gleich nur Betrag von 200,00€ auf 220,00 € geändert.
Ausgewählt wird jedoch 200,00 €.
Es wird nur der erste gefundene Wert berücksichtigt.
Irgendwas läuft hier schief.
Gruss
Peter
AW: Werte aus mehreren TB in Tabelle suchen
10.06.2019 20:12:46
Mullit
Hallo,
ich hatte jetzt erst wieder etwas Zeit, Du müsstest nochmal verdeutlichen, was Du genau erreichen willst, das Selektieren ist ja eigentlich überflüssig, Du kannst direkt alle Werte der Boxen in die Zellen übertragen, abhängig vom jeweiligen Fundwert und da muß nochmal klarer werden, was Du nun suchst, in Deiner Bsp.-ComboBox waren das Datumswerte und keine Geldbeträge...
Gruß, Mullit
Anzeige
AW: Werte aus mehreren TB in Tabelle suchen
13.06.2019 10:04:06
Peter
Hallo Mullit,
besten Dank, dass Du Dir nochmals Zeit nimmst.
Es sollen alle Werte, welche in der UserForm2 aufgelistet werden in der Tabelle Gesamtbuchungen, gesucht werden. Wenn eine Übereinstimmung vorhanden ist, soll für den Button "alle Zellen der Zeile markieren der gesamte Bereich von gefundener Zeile Spalte A bis Y markiert werden.
Für den Button "erste Zelle der Zeile markieren" soll der Bereich in der gefundenen Zeile Spalte S bis Y markiert werden.
Für das erste Beispiel wird die gesamte Zeile gelöscht und für das zweite Beispiel werden die geänderten Werte in den Bereich S bis Y eingetragen.
Über meine bisher weiteren Versuche, löse ich dies über eine Hilfstabelle. Die bisher vorhandenen Werte kopiere ich in die Hilfstabelle S2:Z2 und die geänderten Werte in S3:Z3.
Wenn nun die Werte in S2:Z2 mit den Werten in Gesamtbuchungen M* und S*:Y* übereinstimmen, dann werden die Werte aus Hilfstabelle T3:Z3 in die Gesamtbuchungen S*:Y* übertragen.
* steht für gefundene Zeile.
Ich hoffe ich habe mich verständlich ausgedrückt.
Gruss
Peter
Anzeige

338 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige