Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1536to1540
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
Daten aus Tabellenblatt kopieren
31.01.2017 16:09:49
Moritz
Hallo ,
zuerst möchte ich anmerken, dass ich leider sehr wenig Ahnung von VBA habe, aber man lernt ja nie aus. Ich bin Maschinenbauer und habe es daher nicht soo mit programmieren, aber jetzt versuche mich in die Thematik reinzuarbeiten :)
So jetzt mal zu meinem Problem.
Ich bräuchte einen Code mit dem ich aus einem bestehendem Tabellenblatt Daten in ein anderes Tabellenblatt kopiere.
Mein Code schaut bis jetzt so aus
Sub KopierenAlsWert_()
Sheets("Tabelle1").Range("E14:U44").Copy
Sheets("Tabelle2").Range("C6:N36").PasteSpecial xlPasteValues
End Sub

Das habe ich auch schon ausprobiert und das funktioniert.
Allerdings ist der Bereich den ich kopieren möchte Variabel. Es soll nur der Bereich kopiert werden, bei dem der entsprechende Spaltenwert 100% ist. Falls dieser Wert in zum Beispiel Spalte U nicht 100% entspricht sollen die Werte in Spalte U nicht mit kopiert werden.

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

Betreff
Datum
Anwender
Anzeige
AW: Daten aus Tabellenblatt kopieren
31.01.2017 21:08:40
Piet
Hallo Moritz
ich habe dein Anliegen noch nicht so ganz verstanden, aber das Kopieren funktioniert so nicht! Der Range Bereich bei Copy und Past stimmt nicht überein. Das funktioniert dann nicht, Laufzeitfehler! Entweder müssen beide Bereich von der Grösse her 100% übereinstimmen, oder du gibst die oberste linke Zelle zum Einfügen an. siehe mein Beispiel unten. Den andernen Tiel mit der 100% Übereinstimmung habe ich nicht so ganz verstanden.
Warnung: Benutzt du den unteren Code werden alle alten Daten ohne Rückfrage komplett überschrieben!!
mfg Piet

Sub KopierenAlsWert_()
Sheets("Tabelle1").Range("E14:U44").Copy
Sheets("Tabelle1").Range("C6").PasteSpecial xlPasteValues
End Sub

Anzeige
AW: Daten aus Tabellenblatt kopieren
31.01.2017 21:18:56
Piet
Hallo Moritz
bitte aufpassen: - Schreibfehler von mir in der zweiten Zeile - !!!
Es muss natürlich Tabelle2 lauten - Sheets("Tabelle2").Range("C6")
AW: Daten aus Tabellenblatt kopieren
01.02.2017 09:18:15
Moritz
Hallo Piet,
okay kapiert der Bereich muss gleich sein. Ist auch irgendwie logisch :)
Das andere Problem versuche ich nochmal zu erklären. So mein Code schaut jetzt momentan so aus.
Private Sub CommandButton1_Click()
If Sheets("Tabelle1").Range("A6").Value = "100" Then
Sheets("Tabelle1").Range("A5:A8").Copy
Sheets("Tabelle2").Range("A6:A9").PasteSpecial xlPasteValues
Else
MsgBox " No Data avaiable in Column A"
End If
End Sub
So ich hab jetzt selbst noch bisl drüber nachgedacht und denke das ich für jede einzelne Spalte prüfen möchte ob der Wert 100 enthalten ist. Wenn ja dann kopiere die Daten. Falls nicht kopiere sie nicht. Allerdings funktioniert das leider trotzdem noch nicht.
Aber danke schon mal für die Hilfe bis jetzt.
Anzeige
AW: Daten aus Tabellenblatt kopieren
01.02.2017 09:48:18
Piet
Hallo Moritz
anbei vier Möglichkeiten die dir weiterhelfen können. Damit zaehltst du die Anzahl der Zellen, in der Werte enthalten sind.
Oder mit Blanks wieviele Leerzellen im Bereich sind. Ich hoffe das hift dir weiter. Würde mich freuen.
mfg Piet

Sub test()
MsgBox Range("AF1:AF20").SpecialCells(xlCellTypeConstants).Count
MsgBox Range("AF1:AF20").SpecialCells(xlBlanks).Count  'Leerzellen
MsgBox Application.WorksheetFunction.CountA(Range("AF1:AF20"))
MsgBox Application.WorksheetFunction.CountBlank(Range("AF1:AF20"))
End Sub

AW: Daten aus Tabellenblatt kopieren
01.02.2017 10:09:38
Moritz
Hallo Piet,
mit so einer schnellen Antwort hatte ich gar nicht gerechnet. Aber das Problem ist nicht, dass die anderen Zellen leer sind, sondern dort stehen andere Werte drin. Und ich möchte jetzt nur die Spalten kopieren bei denen in Zelle 6 der Wert 100 steht. Die Anzahl derer muss nicht ausgegeben werden.
Anzeige
AW: Daten aus Tabellenblatt kopieren
01.02.2017 10:42:31
Piet
Hallo Moritz,
auch dafür gibt es eine Lösung, anbei eine kleine Auswahl aus meinem Wissen, nur zur Demo.
Man kann jede Zelle mit If Then einzeln prüfen, oder über Offset in einer For Next Schleife.
Da gibt es wirklich unendlich viele Kombinationsmöglichkeiten, kann ich garnicht aufzahlen.
mfg Piet

Sub Kopie_Test()
'jede Adresse einzeln prüfen
If Range("A6").Value = 100 Then
'Hier der kopiervorgang !!
End If
'oder mehrfach
'10mal kopieren über For next Schleife mit .Offset()
For j = 1 To 10
If Range("A6").Offset(0, j).Value = 100 Then
'Hier der kopiervorgang !!
Range("A6:A28").Offset(0, j).Copy
Range("AA6:AA28").Offset(0, j).PasteSpecial xlPasteAll
End If
Next j
Application.CutCopyMode = False
End Sub

Anzeige
AW: Daten aus Tabellenblatt kopieren
01.02.2017 10:32:55
Moritz
Hallo Piet,
ich bin am probieren und am probieren und hatte jetzt schon immerhin meinen ersten Teilerfolg.
Private Sub CommandButton1_Click()
Dim x As Variant
Dim y As Variant
Dim ws As Worksheet
x = Worksheets("ELINK").Range("D11").Value
y = 100
If x = y Then
Sheets("Tabelle1").Range("A5:A8").Copy
Sheets("Tabelle2").Range("A6:A9").PasteSpecial xlPasteValues
Else
MsgBox "No Data for Base Load in Column A"
End If
End Sub
Damit habe ich das Problem für einen Spalte gelöst und würde das jetzt im Notfall umständlich machen und das für 30 Spalten so machen.
Anzeige
AW: Daten aus Tabellenblatt kopieren
01.02.2017 10:48:26
Piet
Hallo Moritz,
wie interessant, hatte ich eine gute Nase? Bei meinem Vorschlag über For Next Schleife mit Offset?
Sorry, ich habe heute noch einen kniffligen Treah, 500 Schüler auf 8 Raeume zu 8 Zeiten verteilen.
Da werde ich heute den ganzen Tag dran sitzen, klinke mich gleich aus Herber Forum aus.
Schaue morgen noch mal rein. Vielleicht findest du ja jetzt selbst eine Lösung.
mfg Piet

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige