Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
412to416
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
412to416
412to416
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Private Sub WorksheetChange(ByVal Target As Range

Private Sub Worksheet_Change(ByVal Target As Range
12.04.2004 17:42:37
Winfried
Ich versuche schon seit Tagen mit Hilfe diverser Archivrecherchen meine Aufgabe zu lösen, aber da bin ich halt zu schwach.
Aufgabe (vereinfacht):
ganze Zahl gleich/größer 0 in Spalte "D" löst das Makro aus (Blatt Plan)
Bei Zahl = "0" oder Target (0,2)= "System" End Sub
Bei Zahl gleich/größer 1 : Die Zellen 1 bis 9 rechts des Targets kopieren
wenn die Zahl = 1, dann in letzte Zeile Spalte 1:9 des Blatts "Maßnahmen" einfügen
wenn die Zahl = 2, dann 2 mal untereinander einfügen,
wenn die Zahl = 3, dann 3 mal usw. bis etwa max. 20 mal untereinander.
Mit meinem Gurken VBA und etlichen "wenn" Formeln schaffe ich es fast, wenn auch nicht gerade elegant.
Zwei Dinge klappen nicht:
1) Die Zahl resultiert aus einer Formel, das erkennt mein VBA nicht, es startet nur bei manuellem Eintrag. Habe dann zusätzlich Spalte "D" ohne Formel eingefügt, nur = "B" (B beinhaltet die Formel) hat auch nicht geholfen.
2) Ich kriege nicht raus wie ich die 9 Zellen rechts des Targets zum kopieren aktiviere
Im Voraus vielen Dank
Winfried

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

Betreff
Datum
Anwender
Anzeige
AW: Private Sub Worksheet_Change(ByVal Target As Range
12.04.2004 18:18:02
PeterW
Hallo Winfried,
ohne die Mappe und den Code zu kennen wird eine Hilfestellung schwierig.
Zu 1) frage die Zelle ab, durch die die Formel geändert wird.
Zu 2) benutze Range(Cells1, Cells2). Mit Cells(Zeile, Spalte) hast du alle Möglichkeiten, beispielsweise Range(Cells(Target.Row, 2), Cells(Target.Row, 10))
Und auf das Aktivieren kann man in VBA fast immer verzichten:
Range(Cells(Target.Row, 2), Cells(Target.Row, 10)).Copy DeinZielbreich
Gruß
Peter
AW: Private Sub Worksheet_Change(ByVal Target As Range
12.04.2004 22:31:59
Winfried
Hallo Peter,
habe die Datei auf den Server geladen

Die Datei https://www.herber.de/bbs/user/5188.xls wurde aus Datenschutzgründen gelöscht

Range(.Cells(0, 1) usw. hatte ich schon probiert, das geht nicht, oder zumindest weiss ich nicht wies funktioniert.
Gruß
Winfried
Anzeige
AW: Private Sub Worksheet_Change(ByVal Target As Range
13.04.2004 07:48:05
PeterW
Hallo Winfried,
bin mir nicht sicher, ob ich die Aufgabe richtig verstanden habe aber schau dir die Tabelle mal an. Habe allen Code, der nach meinem Verständnis nicht gebraucht wird, auskommentiert.
https://www.herber.de/bbs/user/5191.xls
Gruß
Peter
AW: Private Sub Worksheet_Change(ByVal Target As Range
13.04.2004 19:05:10
Winfried
Hallo Peter,
jetzt hast Du mich am Boden zerstört, habe heute die "Lösung" gefunden, mit zusätzlich (zu dem ich schon hatte) gut 3 A4 Seiten Code und Du haust das in ein paar Linien hin.
Mein Gott was habe ich gebrütet!
Habe Deine Lösung auch ausreichend begriffen dass ich sie an die richtigen Dateien anpassen kann.

Klasse - Danke!
Winfried
Anzeige
AW: Private Sub Worksheet_Change(ByVal Target As Range
13.04.2004 21:29:50
PeterW
Hallo Winfried,
sorry, wollte dich nicht am Boden zerstören - und das "Hinhauen" hat schon ca. 30 Minuten gedauert, wobei ein Großteil dieser Zeit gebraucht wurde, die Aufgabenstellung aus dem vorhandenen Code zu extrahieren. ;-)
Schön, dass es wie gewünscht funktioniert.
Gruß
Peter
PS: schau dir mal die Angebote (links zu sehen) an. Kann aus eigener Erfahrung sagen, dass sie jeden Cent wert sind!
AW: Private Sub Worksheet_Change(ByVal Target As Range
13.04.2004 23:33:06
winfried
Auweia, jetzt habe ich doch noch ein Problemchen gefunden.
Funktioniert nach Übertrag in die Originaldateien wunderbar- aaaaber,
er kopiert die Formeln und nicht die Werte.
Das konntest Du natürlich nicht bemerken da meine hochgeladene Datei keine Formeln beinhaltete. Hier müsste wohl irgendwo ein "values" rein:
Range(Cells(Target.Row, 5), Cells(Target.Row, 13)).Copy .Range("A" & lgCount + iCount)
Hier nochmals der gesamte Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iCount As Integer
Dim lgCount As Long
'prüfen ob Eingabe in A, B oder K
If Target.Column = 1 Or Target.Column = 2 Or Target.Column = 11 Then
'Spalte A, B und K ausgefüllt?
If Cells(Target.Row, 1) <> "" And Cells(Target.Row, 2) <> "" And Cells(Target.Row, 11) <> "" Then
If Cells(Target.Row, 4) = 0 Then Exit Sub
If Cells(Target.Row, 6) <> "System" Then Exit Sub
'erste freie Zeile in Zielblatt
With Sheets("Maßnahmen")
lgCount = .Range("H65536").End(xlUp).Row
'ermitteln, wie oft geschrieben werden muss
For iCount = 1 To Cells(Target.Row, 4)
'Bereich E bis M kopieren
'Bemerkung: Zellen 5 - 13 beinhalten Formeln, beim Einfügen erscheinen diese an stelle der Werte
Range(Cells(Target.Row, 5), Cells(Target.Row, 13)).Copy .Range("A" & lgCount + iCount)
'und die Nummer schreiben
.Cells(lgCount + iCount, 8) = iCount
Next
End With
End If
End If
End Sub

Anzeige
AW: Private Sub Worksheet_Change(ByVal Target As Range
14.04.2004 07:16:42
PeterW
Hallo Winfried,
dann ändere wie folgt:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iCount As Integer
Dim lgCount As Long
'prüfen ob Eingabe in A, B oder K
If Target.Column = 1 Or Target.Column = 2 Or Target.Column = 11 Then
'Spalte A, B und K ausgefüllt?
If Cells(Target.Row, 1) <> "" And Cells(Target.Row, 2) <> "" And Cells(Target.Row, 11) <> "" Then
If Cells(Target.Row, 4) = 0 Then Exit Sub
If Cells(Target.Row, 6) <> "System" Then Exit Sub
'Bereich E bis M kopieren
Range(Cells(Target.Row, 5), Cells(Target.Row, 13)).Copy
'erste freie Zeile in Zielblatt
With Sheets("Maßnahmen")
lgCount = .Range("H65536").End(xlUp).Row
'ermitteln, wie oft geschrieben werden muss
For iCount = 1 To Cells(Target.Row, 4)
'Werte in Zielbereich einfügen
.Range("A" & lgCount + iCount).PasteSpecial Paste:=xlValues
'und die Nummer schreiben
.Cells(lgCount + iCount, 8) = iCount
Next
End With
Application.CutCopyMode = False
End If
End If
End Sub

Gruß
Peter
Anzeige
AW: Private Sub Worksheet_Change(ByVal Target As Range
14.04.2004 19:00:30
Winfried
Das ist jetzt perfekt.
Vielen Dank nochmals für Deine Mühe. Man kann in diesem Forum jede Menge lernen und die meisten Leute sind echt nett. Da zähle ich Dich dazu. :-)
Winfried

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige