Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Zelleninhalt suchen und verschieben
25.11.2014 20:33:24
Spenski
hallo
danke nochmal an franz für die schnelle hilfe.war echt super.
habe nochmal eine codesuche zu dem selben tabellenaufbau
https://www.herber.de/bbs/user/94019.xlsm
Der Auftrag 444 (textbox1) soll im Tabellenblatt 2,4,6,8,10 in spalte C gesucht und entfert werden (bedingung ist das die Maschine in Spalte B mit textbox 1 übereinstimmt)
Jetzt soll in Tabellenblatt 2,4,6,8,10 nach der zeile in der das datum (textbox3) in Spalte A steht und die Maschine (textbox2) in Spalte B steht gesucht werden.
In dieser Zeile soll in Spalte C der Auftrag (textbox1) geschrieben werden.
Auftrag 444
Maschine 2
Datum 24.12.2014
danke
Christian

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelleninhalt suchen und verschieben
27.11.2014 12:12:59
fcs
Hallo Christian,
hier der angepasste Code der Schaltfläche für die neue Suche/Ersetzung.
Gruß
Franz
Private Sub CommandButton1_Click()
Dim wks, intSheet
Dim arrwks1() As Worksheet, arrwks2() As Worksheet
Dim arrZeile1() As Long, arrZeile2() As Long
Dim int1 As Integer, int2 As Integer
Dim varTB_1, varTB_2, varTB_3
Dim arrData, Zeile As Long, ZeileL As Long
'Eingaben in Textboxen prüfen und Werte in Variablen übernehmen
With Me.TextBox1
If .Value = "" Then
MsgBox "Bitte erst Nr. Auftrag eingeben!"
Exit Sub
Else
varTB_1 = IIf(IsNumeric(.Value), Val(.Value), .Value)
End If
End With
With Me.TextBox2
If .Value = "" Then
MsgBox "Bitte erst Nr. für Maschine eingeben!"
Exit Sub
Else
varTB_2 = IIf(IsNumeric(.Value), Val(.Value), .Value)
End If
End With
With Me.TextBox3
If .Value = "" Then
MsgBox "Bitte erst Datum eingeben!"
Exit Sub
Else
If IsDate(.Value) Then
varTB_3 = CDate(.Value)
Else
MsgBox "Eingabe für Datum ist kein gültiger Datumswert"
End If
End If
End With
' Werte in Tabelle2 bis Tabelle8 suchen
For intSheet = 2 To 10 Step 2
Set wks = ActiveWorkbook.Sheets("Tabelle" & Format(intSheet, "0"))
With wks
'letzte Zeile mit Daten in Spalte A und C
ZeileL = Application.WorksheetFunction.Max( _
.Cells(.Rows.Count, 1).End(xlUp).Row, _
.Cells(.Rows.Count, 3).End(xlUp).Row)
'Daten aus Spalten A:C in Array einlesen
arrData = .Range(.Cells(1, 1), .Cells(ZeileL, 3))
'Werte vergleichen und Treffer-Blatt/Zeile merken
For Zeile = 3 To ZeileL
If arrData(Zeile, 2) = varTB_2 Then 'Maschine vergleichen
If arrData(Zeile, 3) = varTB_1 Then 'Auftrag vergleichen
int1 = int1 + 1
ReDim Preserve arrwks1(1 To int1), arrZeile1(1 To int1)
arrZeile1(int1) = Zeile
Set arrwks1(int1) = wks
End If
If arrData(Zeile, 1) = varTB_3 Then 'Datum vergleichen
int2 = int2 + 1
ReDim Preserve arrwks2(1 To int2), arrZeile2(1 To int2)
arrZeile2(int2) = Zeile
Set arrwks2(int2) = wks
End If
End If
Next Zeile
End With
Next intSheet
If int1 = 0 Or int2 = 0 Then
If int1 = 0 Then
MsgBox "Auftrag " & varTB_1 & " zu Maschine " & varTB_2 & " nicht gefunden!"
End If
If int2 = 0 Then
MsgBox "Datum " & varTB_3 & " zu Maschine " & varTB_2 & " nicht gefunden!"
End If
Else
'Werte in gefundenen Zellen ersetzen
'Auftrag zu Maschine löschen
For Zeile = 1 To int1
arrwks1(Zeile).Cells(arrZeile1(Zeile), 3).ClearContents
Next
'Auftrag zu Maschine bei Datum eintragen
For Zeile = 1 To int2
arrwks2(Zeile).Cells(arrZeile2(Zeile), 3).Value = varTB_1
Next
'        Unload Me 'Userform schliessen
End If
'Variablen zurücksetzen
Erase arrData, arrwks1, arrwks2, arrZeile1, arrZeile2
Set wks = Nothing
End Sub

Anzeige
AW: Zelleninhalt suchen und verschieben
27.11.2014 17:47:42
Spenski
Hallo Franz ,
danke auch für diesen code , finds echt prima wie leihen hier geholfen wird.
allerdings ärgere ich mich gerade über meine ungenaue Aufgabenstellung , da ich mir vorstellen kann wieviel arbeit darin steckt :(
mir sind 2 fehler unterlaufen bzw ich habe sie nicht erwähnt.
a.) im Beispiel der Datei sind am 24.12.2014 an der Maschine 2 Plätze , einer ist schon belegt durch auftrag 666 . nach Ausführung deines codes werden beide Plätze mit auftrag 444 bestückt.
ich wollte es auch so schreiben , habe es aber irgendwie vergessen , das nach der ersten freien stelle in Spalte C gesucht werden soll die die Bedingungen (Datum , Maschine) erfüllt.
wird kein platz gefunden evtl ne Meldung
b.) Set wks = ActiveWorkbook.Sheets("Tabelle" & Format(intSheet, "0"))
In der Datei wo alles eingebaut wird heissen die Tabellenblätter anders als wie in der Bsp Datei :/
dies betrifft auch den anderen code aus dem anderen thread
sheet1: Daten
sheet2: WPA KW 48
sheet3: WV KW 48
sheet4: WPA KW 49
sheet5: WV KW 49
sheet6: WPA KW 50
sheet7: WV KW 50
sheet8: WPA KW 51
sheet9: WV KW 51
sheet10: WPA KW 52
sheet11: WV KW 52
Jede Woche wird über ein Makro sheet 2-11 umbenannt sodass sheet 2 und 3 immer die aktuelle Woche ist
es tut mir echt leid und mir ist das sehr unangenehm und ich weiss manchmal echt nicht wie man sich hier richtig bedanken kann für die arbeit die hier einige aufbringen.
wünsche dir einen schönen start ins Wochenende
gruss christian

Anzeige
AW: Zelleninhalt suchen und verschieben
28.11.2014 08:44:16
fcs
Hallo Christian,
hier der angepasste Code.
Wenn die Bläter immer die gleiche Reihenfolge haben, dann kann man auch mit der Index-Nr. arbeiten
Gruß
Franz
Private Sub CommandButton1_Click()
Dim wks, intSheet
Dim arrwks1() As Worksheet, arrwks2() As Worksheet
Dim arrZeile1() As Long, arrZeile2() As Long
Dim int1 As Integer, int2 As Integer
Dim varTB_1, varTB_2, varTB_3
Dim arrData, Zeile As Long, ZeileL As Long
'Eingaben in Textboxen prüfen und Werte in Variablen übernehmen
With Me.TextBox1
If .Value = "" Then
MsgBox "Bitte erst Nr. Auftrag eingeben!"
Exit Sub
Else
varTB_1 = IIf(IsNumeric(.Value), Val(.Value), .Value)
End If
End With
With Me.TextBox2
If .Value = "" Then
MsgBox "Bitte erst Nr. für Maschine eingeben!"
Exit Sub
Else
varTB_2 = IIf(IsNumeric(.Value), Val(.Value), .Value)
End If
End With
With Me.TextBox3
If .Value = "" Then
MsgBox "Bitte erst Datum eingeben!"
Exit Sub
Else
If IsDate(.Value) Then
varTB_3 = CDate(.Value)
Else
MsgBox "Eingabe für Datum ist kein gültiger Datumswert"
End If
End If
End With
' Werte in Tabelle2 bis Tabelle8 suchen
For intSheet = 2 To 10 Step 2
'         Set wks = ActiveWorkbook.Sheets("Tabelle" & Format(intSheet, "0"))
Set wks = ActiveWorkbook.Sheets(intSheet)
With wks
'letzte Zeile mit Daten in Spalte A und C
ZeileL = Application.WorksheetFunction.Max( _
.Cells(.Rows.Count, 1).End(xlUp).Row, _
.Cells(.Rows.Count, 3).End(xlUp).Row)
'Daten aus Spalten A:C in Array einlesen
arrData = .Range(.Cells(1, 1), .Cells(ZeileL, 3))
'Werte vergleichen und Treffer-Blatt/Zeile merken
For Zeile = 3 To ZeileL
If arrData(Zeile, 2) = varTB_2 Then 'Maschine vergleichen
If arrData(Zeile, 3) = varTB_1 Then 'Auftrag vergleichen
int1 = int1 + 1
ReDim Preserve arrwks1(1 To int1), arrZeile1(1 To int1)
arrZeile1(int1) = Zeile
Set arrwks1(int1) = wks
End If
If arrData(Zeile, 1) = varTB_3 _
And arrData(Zeile, 3) = "" _
And int2 = 0 Then 'Datum vergleichen, bei vorhandenem Auftrag _
überspringen, nur eine Zeile merken
int2 = int2 + 1
ReDim Preserve arrwks2(1 To int2), arrZeile2(1 To int2)
arrZeile2(int2) = Zeile
Set arrwks2(int2) = wks
End If
End If
Next Zeile
End With
Next intSheet
If int1 = 0 Or int2 = 0 Then
If int1 = 0 Then
MsgBox "Auftrag " & varTB_1 & " zu Maschine " & varTB_2 & " nicht gefunden!"
End If
If int2 = 0 Then
MsgBox "Datum " & varTB_3 & " zu Maschine " & varTB_2 & " nicht gefunden!"
End If
Else
'Werte in gefundenen Zellen ersetzen
'Auftrag zu Maschine löschen
For Zeile = 1 To int1
arrwks1(Zeile).Cells(arrZeile1(Zeile), 3).ClearContents
Next
'Auftrag zu Maschine bei Datum eintragen
For Zeile = 1 To int2
arrwks2(Zeile).Cells(arrZeile2(Zeile), 3).Value = varTB_1
Next
'        Unload Me 'Userform schliessen
End If
'Variablen zurücksetzen
Erase arrData, arrwks1, arrwks2, arrZeile1, arrZeile2
Set wks = Nothing
End Sub

Anzeige
AW: Zelleninhalt suchen und verschieben
28.11.2014 16:53:27
Spenski
Danke Franz
Du weisst gar nicht wie glücklich mich das gerade macht :)
hab nur noch mal eine frage zu änderung wegen den sheetnamen.
ist nur dieser teil :
Set wks = ActiveWorkbook.Sheets(intSheet)
dazugekommen oder übersehe ich irgendetwas?
mfg
Christian
und ein wunderschönes wochenende

AW: Zelleninhalt suchen und verschieben
28.11.2014 18:59:49
fcs
Hallo Christian,
hab nur noch mal eine frage zu änderung wegen den sheetnamen.
ist nur dieser teil :
Set wks = ActiveWorkbook.Sheets(intSheet)
dazugekommen oder übersehe ich irgendetwas?

Nein, dies ist die einzige Anpassung. Die Reihenfolge der Blätter muss dann immer identisch sein:
1: Daten
2: WPA KW x
3: WV KW x
4: WPA KW x+1
5: WV KW x+1
usw.
Alternativ könnte man innerhalb der Schleife alle Blätter abarbeiten und dabei den Beginn des Blattnamens prüfen und nur in den Blätter mit "WPA KW" suchen/vergleichen.
Gruß
Franz

Anzeige
AW: Zelleninhalt suchen und verschieben
28.11.2014 19:42:47
Spenski
Hallo franz
also die Blattanordnung (also sheet 2,4,6,8,10) bleibt immer gleich nur die zahlen (Kalenderwochen) im Tabellennamen ändern sich.
Ich weiß ich habe schon sehr viel verlang aber könntest du den anderen Code aus dem anderen Thread (zelleninhalte suchen und tauschen) auch für diese Tabellenblattanordnung umbauen?
habs versucht aber es funktioniert irgendwie nicht mehr.
Hab ein schönes Wochenende
Christian

AW: Zelleninhalt suchen und verschieben
29.11.2014 09:48:35
fcs
Hallo Christian,
ist es denn wirklich so schwierig, diese eine Zeile anzupassen?
Hier deine Datei mit beiden Userformen:
https://www.herber.de/bbs/user/94104.xlsm
Da bei dir ja immer nur ein Pärchchen von Zeilen zu suchen ist kann man den Code der Schaltflächen auch etwas vereinfachen. Mein ursprünglicher Code stammte aus einer Datei in der jeweils mehrere Treffer auftreten konnten, so dass auch infos zu mehreren Zellen zwischengespeichert werden mussten.
Datei mit vereinfachtem Code:
https://www.herber.de/bbs/user/94105.xlsm
Gruß
Franz

Anzeige
AW: Zelleninhalt suchen und verschieben
29.11.2014 10:43:52
Spenski
Danke

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige