Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1464to1468
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
Inhaltsverzeichnis

Einträge kopieren und einfügen

Einträge kopieren und einfügen
15.12.2015 09:28:32
Mustafa
Hallo zusammen,
ich habe folgenden Fall:
Ich habe zwei Listen:
Eine Liste beinhaltet in Spalte A Materialnummern (z.B. 79.193.040). Die letzten Drei Endziffern 040 ist ein Farbcode.
Die zweite Liste beinhaltet die Farbcodes mit den Bezeichnungen in den verschiedenen Sprachen.
Was ich möchte ist jetzt, dass ein VBA Code überprüft welche Materialien in der zweiten Liste vorkommen und falls eine Farbe vorhanden ist soll die Bezeichnung aus der zweiten Liste raus kopiert werden und in die erste Linie eingefügt werden (unterhalb der Materialbezeichnung Spalte E bis I.
Ich bedanke mich schon mal im voraus.
https://www.herber.de/bbs/user/102261.xlsx
https://www.herber.de/bbs/user/102262.xlsx
Viele Grüsse
Mustafa

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Warum VBA?
15.12.2015 10:50:02
Mustafa
Hallo Michael,
vielen Dank für die Rückmeldung.
Ich hatte bereits mit SVerweis gearbeitet jedoch haben mehrere Personen darauf Zugriff und jedes mal wird die Formel zerschossen, daher ein VBA Code.
Danke

AW: Dann evtl. Blatt schützen...
15.12.2015 11:11:25
Michael
Hallo Mustafa!
haben mehrere Personen darauf Zugriff und jedes mal wird die Formel zerschossen
Überarbeite den Aufbau Deiner Tabelle so, dass Du das Blatt (und die jeweiligen Formeln) schützen kannst und die Kollegen dennoch drinnen arbeiten können. Ist aus evtl. einfacher als hier auf VBA zu setzen - zumal in Deinem Bsp. die Farbtabelle auch noch in einer anderen Datei liegt.
LG
Michael

Anzeige
AW: Dann evtl. Blatt schützen...
15.12.2015 11:18:37
Mustafa
Hallo Michael,
es ändert leider nichts daran das es weiterhin zwei unterschiedliche Dateien existieren. In meinem Beispiel waren nur 4 Beispiele angegeben, es sind jedoch meistens über 800 und jedes mal die Formel darauf setzen ist auch irgendwie blöd.
Blatt schützen wird schwer da es bereits geschützt ist und zwar nicht von mir.
Ich würde trotzdem gern ein VBA Code wenn es möglich ist.
Trotzdem Danke für deine Mühe.
Viele Grüsse
Mustafa

AW: Dann...
15.12.2015 11:43:08
Michael
Mustafa,
könnte man die jeweiligen SVerweise per VBA eintragen, wenn's denn sein muss. Ist die Systematik in der Materialliste konsistent? Soll heißen: Stehen die SVerweise IMMER in den Spalten E bis I und zwar ab Zeile 2 immer alle drei Zeilen (2, 5, 8... )? Dann als Beispiel: https://www.herber.de/bbs/user/102269.xlsm
LG
Michael

Anzeige
AW: Dann...
15.12.2015 12:03:04
Mustafa
Super Danke dir. Funktioniert einwandfrei. Ich muss nur schauen das ich auf die Farbpalette zugreifen kann auch wenn es in einer separaten Datei abgelegt ist.
Viele Grüsse
Mustafa

AW: Gerne - Danke für die Rückmeldung! owT
15.12.2015 12:36:02
Michael

AW: Gerne - Danke für die Rückmeldung! owT
16.12.2015 10:33:16
Mustafa
Hallo Michael,
ich habe jetzt den Fall das es nicht immer alle 3 Zeilen ist sondern auch mal 4 Zeiler oder 5 Zeiler vorkommmen kann.
Wie kann ich das lösen?

AW: Das hab ich gemeint mit "konsistent"...
16.12.2015 15:40:34
Michael
Mustafa,
in der Lösung, die ich Dir angeboten habe. Wenn Du in der Tabellenstruktur keine Systematik hast, wie soll dann ein Makro darauf Bedacht nehmen?
Wie kann ich das lösen?
Ohne konkretes Beispiel Deiner *tatsächlichen* Verhältnisse in der Arbeitsmappe kann ich dazu nichts sagen.
Du hast im Übrigen Glück, dass ich nochmal hier reinschaue - eigentlich hast Du eine Lösung erhalten, und diese akzeptiert! Nur so für die Zukunft!
LG
Michael

Anzeige
AW: Das hab ich gemeint mit "konsistent"...
16.12.2015 16:39:04
Mustafa
Hey Michael,
ja sorry. Das habe ich erst heute festgestellt.
Anbei eine Testdatei
https://www.herber.de/bbs/user/102305.xlsx
Die Liste der Farbtabelle hast du ja.
Vielen Dank nochmal.

AW: Siehe Christophs Lösung...
17.12.2015 10:22:56
Michael
Mustafa,
wenn Deine *tatsächlichen* Verhältnisse so aussehen... eine andere Systematik fällt mir da auch nicht ein.
LG
Michael

AW: Siehe Christophs Lösung...
17.12.2015 12:08:09
Mustafa
Hallo Michael,
Danke dir. Werde versuchen es anzupassen

AW: Einträge kopieren und einfügen
15.12.2015 23:35:15
Christoph
Hallo Mustafa,
ich weiß, dass hier schon eine Lösung vorhanden ist.
Hatte mich vor der Arbeit noch selbst versucht und hatte keine Zeit mehr, mein Makro zu veröffentlichen.
Hier meine Variante.
Eventuell Namen anpassen.
Sub Zahlungsabgleich()
ScreenUpdating = False
Application.DisplayAlerts = False
Dim WB2 As Workbook, WS1 As Worksheet, WS2 As Worksheet, Found As Object, Adresse As String, k  _
As Integer, V As String
Set WS1 = Workbooks("Material.xlsx").Sheets("Tabelle1") ' Anpassen
Dim x As String
Dim y As String
Set WB2 = Workbooks("Farbtabelle.xlsx") 'Anpassen
Set WS2 = Workbooks("Farbtabelle.xlsx").Sheets("Tabelle1") ' Anpassen
For k = 1 To 10
If Not IsEmpty(WS1.Cells(k, 1)) Then
If Not (WS1.Cells(k, 1)) = "IBAN" Then
WS2.Activate
y = WS1.Cells(k, 1)
x = Mid(y, 8, 10)
Set Found = WS2.Columns(1).Find(What:=x, LookIn:=xlValues, LookAt:=xlWhole)
If Found Is Nothing Then
Else
Range(Found.Address).Select
Adresse = Selection.Address
Range(Adresse).Offset(0, 2).Copy
With WS1.Range("E" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Range(Adresse).Offset(0, 3).Copy
With WS1.Range("F" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Range(Adresse).Offset(0, 4).Copy
With WS1.Range("G" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Range(Adresse).Offset(0, 5).Copy
With WS1.Range("H" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Range(Adresse).Offset(0, 6).Copy
With WS1.Range("I" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
End With
End With
End With
End With
End If
End If
End If
Next
Application.DisplayAlerts = True
ScreenUpdating = True
End Sub

Anzeige
AW: Einträge kopieren und einfügen
16.12.2015 10:29:40
Mustafa
Hi Christoph,
bei mir kommt der Fehler "Index ausserhalb des gültigen Bereichs".
Ich habe zwei Listen erstellt "Farbtabelle" sowie "Material". Diese beiden Listen sind im selbem Ordner.
Was mache ich falsch?

AW: Einträge kopieren und einfügen
16.12.2015 10:50:58
Christoph
Hallo Mustafa,
Wo bekommst du denn den Fehler?

AW: Einträge kopieren und einfügen
16.12.2015 11:17:02
Christoph
Hallu Mustafa,
ich nochmal.
Denke, das Problem ist, dass die Tabelle nicht offen war.
Füge das Makro in die Tabelle Material ein. Speichere sie als .xlsm Datei ab und passe den Pfad für die Farbtabellen-Datei noch an. Dann sollte es Funktionieren.
Sub Zahlungsabgleich()
ScreenUpdating = False
Application.DisplayAlerts = False
Dim WB2 As Workbook, WS1 As Worksheet, WS2 As Worksheet, Found As Object, Adresse As String,  _
k As Integer, V As String
Dim x As String
Dim y As String
Application.Workbooks.Open "C:\Users\acer\Desktop\Testherber\Farbtabelle.xlsx"
Set WS1 = Workbooks("Material.xlsm").Sheets("Tabelle1") ' Anpassen
Set WB2 = Workbooks("Farbtabelle.xlsx") 'Anpassen
Set WS2 = Workbooks("Farbtabelle.xlsx").Sheets("Tabelle1") ' Anpassen
For k = 1 To 200
If Not IsEmpty(WS1.Cells(k, 1)) Then
WS2.Activate
y = WS1.Cells(k, 1)
x = Right(y, 3)
Set Found = WS2.Columns(1).Find(What:=x, LookIn:=xlValues, LookAt:=xlWhole)
If Found Is Nothing Then
Else
Range(Found.Address).Select
Adresse = Selection.Address
Range(Adresse).Offset(0, 2).Copy
With WS1.Range("E" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Range(Adresse).Offset(0, 3).Copy
With WS1.Range("F" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Range(Adresse).Offset(0, 4).Copy
With WS1.Range("G" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Range(Adresse).Offset(0, 5).Copy
With WS1.Range("H" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Range(Adresse).Offset(0, 6).Copy
With WS1.Range("I" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
End With
End With
End With
End With
End If
End If
Next
WB2.Close
Application.DisplayAlerts = True
ScreenUpdating = True
End Sub

Anzeige
AW: Einträge kopieren und einfügen
16.12.2015 12:50:42
Mustafa
Hallo Christoph,
jetzt wird die Datei "Farbtabelle" geöffnet und danach erhalte ich die Fehlermeldung "400".
Habe die Anpassungen die Du erwähnt hast vorgenommen.

AW: Einträge kopieren und einfügen
16.12.2015 22:20:49
Christoph
Hallo Mustafa,
es wäre sinnvoll wenn du nicht nur sagst, das du einen Fehler bekommst, sondern auch sagst wo du ihn bekommst bzw. welche Zeile kopiert wird.
Gruß
Christoph

AW: Einträge kopieren und einfügen
16.12.2015 23:17:22
Mustafa
Hi Christoph,
Die Fehlermeldung erscheint sofort nach dem die Farbtabelle geöffnet wird. Es geschieht nix bis auf das öffnen der Farbtabelle.
Die Meldung 400 ist eine unklare Meldung und hilft mir nicht weiter.
Danke für deine Mühe
Grüße
Mustafa

Anzeige
AW: Einträge kopieren und einfügen
17.12.2015 11:26:22
Mustafa
Hi Christoph,
ich hab den Fehler. Es lag daran das ich das Coding in der Tabelle der Materialliste eingefügt hatte. Ich habe es nun in die Arbeitsmappe eingefügt und es funktioniert.
Ich habe jedoch den Fall das auch oft vorkommmt, dass ein Material mehrere Bezeichnungen über 3,4 oder 5 Zeilen hat. Das heisst hier müsste die Farbe unterhalb der letzten Bezeichnung eingefügt werden.
Wie gehe ich vor bzw. was muss ich anpassen?.
Viele Grüsse
Mustafa

AW: Einträge kopieren und einfügen
17.12.2015 12:49:01
Christoph
Hallo Mustafa,
Machbar ist das. Kann ich dir heute abend anpassen.
Gruß
Christoph

Anzeige
AW: Einträge kopieren und einfügen
17.12.2015 17:38:32
Mustafa
Super danke dir vielmals Christoph. Ich bin auf die Lösung heute Abend gespannt.
Viele Grüße
Mustafa

AW: Einträge kopieren und einfügen
18.12.2015 02:31:28
Christoph
Hi Mustafa,
mein Bruder ist aus Amerika zu besuch, daher erst jetzt die Lösung.
Ist relativ lang der Code. Geht mit Sicherheit einfacher. Aber er funktioniert.=)
Sub Zahlungsabgleich()
ScreenUpdating = False
Application.DisplayAlerts = False
Dim WB2 As Workbook, WS1 As Worksheet, WS2 As Worksheet, Found As Object, Adresse As String, k  _
As Integer, V As String
Set WS1 = Workbooks("Material.xlsm").Sheets("Tabelle1") ' Anpassen
Dim x As String
Dim y As String
Dim Zeilenzahl As Long
Set WB2 = Workbooks("Farbtabelle.xlsx") 'Anpassen
Set WS2 = Workbooks("Farbtabelle.xlsx").Sheets("Tabelle1") ' Anpassen
WS1.Activate
Zeilenanzahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For k = 1 To Zeilenanzahl
If Not IsEmpty(WS1.Cells(k, 1)) Then
WS2.Activate
y = WS1.Cells(k, 1)
x = Right(y, 3)
Set Found = WS2.Columns(1).Find(What:=x, LookIn:=xlValues, LookAt:=xlWhole)
If Found Is Nothing Then
Else
Range(Found.Address).Select
Adresse = Selection.Address
Range(Adresse).Offset(0, 2).Copy
If WS1.Cells(k + 1, 5).Value = "" Then
With WS1.Range("E" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
Else
With WS1.Range("E" & k).End(xlDown).Offset(1, 0)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
End If
Range(Adresse).Offset(0, 3).Copy
If WS1.Cells(k + 1, 6).Value = "" Then
With WS1.Range("F" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
Else
With WS1.Range("F" & k).End(xlDown).Offset(1, 0)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
End If
Range(Adresse).Offset(0, 4).Copy
If WS1.Cells(k + 1, 7).Value = "" Then
With WS1.Range("G" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
Else
With WS1.Range("G" & k).End(xlDown).Offset(1, 0)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
End If
Range(Adresse).Offset(0, 5).Copy
If WS1.Cells(k + 1, 8).Value = "" Then
With WS1.Range("H" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
Else
With WS1.Range("H" & k).End(xlDown).Offset(1, 0)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
End If
Range(Adresse).Offset(0, 6).Copy
If WS1.Cells(k + 1, 9).Value = "" Then
With WS1.Range("I" & k + 1)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
Else
With WS1.Range("I" & k).End(xlDown).Offset(1, 0)
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
End If
End If
End If
Next
Application.DisplayAlerts = True
ScreenUpdating = True
End Sub

Bitte um Rückmeldung, ob es funktioniert.
Gruß
Christoph

Anzeige
AW: Einträge kopieren und einfügen
18.12.2015 09:18:16
Mustafa
Hey Christoph,
Tip Top. Funktioniert genau so wie es soll.
Vielen Dank für deine Mühe und Zeit.
Schönen Tag
Viele Grüsse
Mustafa

351 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige