Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1472to1476
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

VBA Kopieren Wenn

VBA Kopieren Wenn
08.02.2016 18:10:18
Nicolas
Hallo, würde mich über Hilfe bezüglich folgender Macro freuen:
Ich möchte, dass wenn ich in einer bestimmten Zelle einen Wert eingebe
z.B in "B2" die 1, dass dann automatisch ein bestimmter Zellenbereich, den ich definiere kopiert und in die Zwischenablage geführt wird.
Ich dachte mir ggf. eine Wenn dann sonst-Formel könnte helfen oder sowas in der Art:
Bin kein Profi...
If Range("B2").Value = 1 Then
Range("A1:A5").Select
Selection.Copy
Application.CutCopyMode = False
End If
End Sub
ich würde dann das dann gerne fortfahrend anwenden, also
If Range "B3" = 2 Then Range ("A5:A10")
Ist sowas in der Art möglich?
Danke!

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Kopieren Wenn
08.02.2016 18:28:19
Michael
Hi Nicolas,
z.B. so (zum gewünschten Tabellenblatt einfügen):
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And Target.Row > 1 Then ' Spalte B
If Target.Value = Target.Row - 1 Then
' n=geänderte Zeile in B - 1, also B2:1, B3:2 usw.
Range("A" & Target.Row - 1).Resize(5, 1).Copy
End If
End If
End Sub

Der Code läßt sich noch anpassen, wenn Du mir den mathematischen Zusammenhang zwischen
B2:1 und A1:A5 und B3:2 und A5:A10 erklärst.
Schöne Grüße,
Michael

AW: VBA Kopieren Wenn
08.02.2016 19:42:39
Nicolas
Hallo und vielen Dank für die Hilfe,
es geht im Prinzip darum, dass bei der Eingabe einer bestimmten Frequenz/Zahl (1,2,3) in eine bestimmte Zelle Z.B B1,(das würde eigentlich reichen), sich daraufhin automatisch ein bestimmten Spaltenbereich kopiert. (Spalte A in diesem Fall)
Z.B Ich gebe in Zelle B1; die Häufigkeit 1 an, dann soll in der Spalte A (A1:A5) kopiert werden,
gebe ich die Häufigkeit 2 in die Zelle B2 ein, soll fortlaufend z.B (A5:A10) kopiert werden.
Das liegt daran, da abhängig von der Frequenz, die Informationen in den Zeile unterschiedlich ist.
Ich möchte aber, dass der User mithilfe einer Userform lediglich die Frequenz angibt und sich dann ,der jeweilige Bereich automatisch kopiert, so muss man nicht immer wieder zur jeweiligen Informationsquelle runter scrollen.
Den Code gebe ich in den VBA-Editor lediglich unter z.b Tabelle1 ein, weil wenn ich derzeit 1 in Zelle B1 eingebe passiert nichts.
Vielen Dank, Nico

Anzeige
AW: VBA Kopieren Wenn
08.02.2016 20:09:53
Michael
Hi Nico,
daß bei Eingabe in B1 nichts passiert, liegt daran, daß Du ganz oben geschrieben hast:
z.B in "B2" die 1
aber ab A1 kopierst, nämlich der Zeile VOR der Eingabe - das geht natürlich rechnerisch nicht, denn wenn Du nach der gleichen Logik in B1 was eingibst, wäre die vorhergehende Zeile die 0, und die gibt es nicht.
Also: Deine Angaben sind widersprüchlich.
Deine Ausführungen
Z.B Ich gebe in Zelle B1; die Häufigkeit 1 an, dann soll in der Spalte A (A1:A5) kopiert werden,
gebe ich die Häufigkeit 2 in die Zelle B2 ein, soll fortlaufend z.B (A5:A10) kopiert werden.

sind auch nicht wirklich hilfreich, derweil da immer noch kein mathematischer Zusammenhang zwischen der Eingabe und dem zu kopierenden Bereich erkennbar ist.
Also: 1 generiert A1:A5 und 2 generiert A5:A10 - das würde bedeuten,
- daß bei 1 ab Zeile 1, und zwar insgesamt 5 Zellen kopiert werden und
- bei 2 dann ab Zeile 5, und zwar insgesamt 6 Zellen.
Wo ist da der Zusammenhang zwischen a) der Zelle, in die was eingegeben wird, b) dem eingegebenen Wert und c) dem Bereich?
Wenn Du konkrete Angaben machst, kann man auch konkret programmieren...
Oder so: lad bitte mal ne Beispieldatei hoch, dann wird's vielleicht plausibler.
Schöne Grüße,
Michael

Anzeige
AW: VBA Kopieren Wenn
08.02.2016 21:08:35
Nicolas
Hallo und vielen Dank,
Sorry noch mal von vorne;
Wenn in Zeile B1 eine 1 steht dann soll Spalte A jeweils von (A1:A5) kopiert werden
Wenn eine 2 drin steht dann von (A1:A11)
Weenn eine 3 drinsteht (A1:A16), wenn eine 4 eingeben wird (A1:A21).usw
Die Zeilen A1:A5 sind unabhängig von dem Inhalt der Zeile A6:A11, der Inhalt ist also anders, jedes mal.
Habe ich eine Häufigkeit von 1 soll nur der 1 Spaltenbereich A1:A5 kopiert werden, habe ich jedoch 2 soll der Spaltenabschnitt von A1:A11 kopiert werden.
Jeder Datensatz hat 5 Zellen, der erste Datensatz endet also bei A5 und der neue startet bei A6 und endet bei A 11. (Unten jeweils bei der 55)
Die Zahlen ergeben auf den ersten Blick keinen Sinn, aber abhängig von der Frequenz/Häufigkeit, müssen die Datenbanken kopiert werden:
ICh gebe also in B1 eine 1 an und kopiert wird Wert von (A1:A5) gebe ich eine 2 an von A1 bis A11, und immer so weiter.Ich gehe dann mit dem Kopierten Wert im Zwischenspeicher in ein anders Programm und füge es dort ein.
Das ganze sieht so aus:
A B
1 55
2 "01
3
4
5 2
6 55
7 "01
8
9
10 3
11 55
....

Anzeige
AW: VBA Kopieren Wenn
08.02.2016 22:53:08
Piet
HALLO
mal eine höfliche technische Frage von mir. Vielleicht habe ich was falsch verstanden?
Es soll kopiert werden. In der Anfrage stand dahinter der Befehl: CutCopyMode = False
Das heisst im Klartext, Excel löscht den Kopie Modus wieder. Der muss entfallen!
Wird ein Bereich kopiert und nicht sofort eingefügt, dazwischen eine andere Funktion
ausgeführt, gehen meines Wissens die kopierten Daten wieder verloren. Bitte beachten!
zur Aufgabe selbst: (hier liegt meines Erachtens ein kleiner Denkfehler vor)
Ich gebe also in B1 eine 1 an und kopiert wird Wert von (A1:A5) gebe ich eine 2 an von A1 bis A11, und immer so weiter.
Bei Zahl 2 -A1:A11- kann bitte nicht stimmen, wenn jeder Datensatz exakt 5 Werte hat!
Dann muss der Bereich -A6:A10- sein. Deshalb kommen sind Ratgeber vielleicht verwirrt?
Wird das berücksichtigt ist die Lösung simpel.
Bitte mal das Makro in ein Modulblatt kopieren, ein CommandButton mit dem Makro
verknüpfen und testen. Bei mir funktioniert es.
Sub Bereich_kopieren()
Zahl = Range("B1") - 1
Zahl = Zahl * 5 + 1
'Bereich nach Zahl*5 selektieren
Range("A" & Zahl & ":A" & Zahl + 4).Select
End Sub
mfg Piet

Anzeige
AW: VBA Kopieren Wenn
09.02.2016 09:06:03
Nico
Hallo, vielen Dank!
richtig leider kleiner Denkfehler meinerseits drin.
Dieser code ist genau das, was ich benötige:
Sub Bereich_kopieren()
Zahl = Range("B1") - 1
Zahl = Zahl * 5 + 1
'Bereich nach Zahl*5 selektieren
Range("A" & Zahl & ":A" & Zahl + 4).Select
End Sub
Ledliglich eines fehlt mir noch, wenn ich jetzt in Zeile B1 die Zahl 2 eingebe wird der Bereich (A6:A10) makiert ich würde aber gerne, dass wenn die Zahl 2 eingeben wird, der Bereich A1:A5 + der Bereich A6:a10 makiert wird. sprich immer wenn ich eine Zahl erhöhe, kommt ein Datensatz von jeweils 5 zeilen dazu.
Z.B ich gebe die Zahl 1 ein, Bereich A1:A5 wird makiert, ich gebe zahl 2 sein Bereich A1:A10 wird makiert, wenn ich 3 eingebe A1:A15.
danke und gruss Nico

Anzeige
genau das hatte ich gemeint!
09.02.2016 15:17:50
Michael
Hi zusammen,
hier nochmal so, wie eingangs gewünscht: "wenn ich eingebe..." (jetzt in B1) mit
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim abZeile&
If Target.Column = 2 And Target.Row = 1 Then ' Zelle B1
If Target.Value > 0 Then
abZeile = (Target.Value - 1) * 5 + 1
Range("A" & abZeile).Resize(5, 1).Copy
End If
End If
End Sub
und Testdatei: https://www.herber.de/bbs/user/103399.xls
Schöne Grüße,
Michael

AW: genau das hatte ich gemeint!
09.02.2016 16:15:49
Nicolas
Hi,
das funktioniert soweit auch sehr gut ich möchte aber, dass wenn ich in Zelle B1 die Zahl 2
eingebe, der Zellbereich (A1:A5) und A6:A10, also beides die Zelle A1 bis A 10 wid kopiert.
wenn ich eine 3 einggebe soll der Zellbereich A1 bis A15 kopiert werden.
Jedes mal wenn ich eine Zahl erhöhe z.B von 2 auf 3, sollen 5 Zeilen nach unten erhöht werden.
Das Beispiel funktioniert, aber es kopiert halt eben immer nur den jeweiligen Bereich, wenn ich eine 2 eingebe wird A6 bis A10 kopiert und nicht A1 bis a10
Gruss Nico

Anzeige
na, dann eben so
09.02.2016 19:34:26
Michael
Hi Nico,
kleine Änderung
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim bisZeile&
If Target.Column = 2 And Target.Row = 1 Then ' Zelle B1
If Target.Value > 0 Then
bisZeile = Target.Value * 5
Range("A1").Resize(bisZeile, 1).Copy
End If
End If
End Sub
Gruß,
Michael
P.S.: ein bißchen Mitdenken schadet auch nicht, oder?

AW: na, dann eben so
09.02.2016 19:48:42
Nicolas
Merci, ja das ist alles noch etwas irritierend

AW: na, dann eben so
10.02.2016 14:45:57
Michael
Was im einzelnen?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige