Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
812to816
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
812to816
812to816
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Mehrfachauswahl im Worksheetchange

Mehrfachauswahl im Worksheetchange
29.10.2006 02:57:57
floh
Hallo Excelexperten,
folgendes Problem,
in einer Tabelle soll bei Änderung eines Wertes in der Spalte D,F oder G
in der Zeile mit dem geänderten Wert Formeln aus Zeile 4 eingefügt , berechnet und dann wieder in Werte umgewandelt werden .
Ändert sich zum Beispiel der Wert in F15 sollen die Formel aus B4,E4,H4:J4 in B15,E15,H15:J15 eingefügt, berechnet und danach wieder in Werte umgewandelt werden .
Der Cursor soll seine Position durch das Makro nicht ändern !
Dazu folgendes Beispiel mit genauer Beschreibung
https://www.herber.de/bbs/user/37738.xls
Gibt es da eine Lösung ?
Danke für eure Hilfe im Voraus

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrfachauswahl im Worksheetchange
29.10.2006 07:56:25
Erich
Hallo floh(?),
probier mal
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngB As Range, rg As Range, zz As Long
Set rngB = Intersect(Target, Rows("5:65536"), Union(Columns("D"), Columns("F:G")))
If rngB Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each rg In rngB
zz = rg.Row
Cells(4, 2).Copy
Cells(zz, 2).PasteSpecial xlPasteFormulas
Cells(4, 5).Copy
Cells(zz, 5).PasteSpecial xlPasteFormulas
Range(Cells(4, 8), Cells(4, 10)).Copy
Cells(zz, 8).PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
Cells(rg.Row, 2) = Cells(rg.Row, 2)
Cells(rg.Row, 5) = Cells(rg.Row, 5)
Range(Cells(rg.Row, 8), Cells(rg.Row, 10)) = _
Range(Cells(rg.Row, 8), Cells(rg.Row, 10)).Value
Next rg
rngB.Cells(1).Select
Application.EnableEvents = True
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Mehrfachauswahl im Worksheetchange
29.10.2006 08:05:15
Erich
Hallo nochmal.
Wenn die Aktion nur erfolgen soll, wenn eine gelb markierte Zelle geändert wird, dann so:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngB As Range, rg As Range, zz As Long
Set rngB = Intersect(Target, Rows("5:65536"), Union(Columns("D"), Columns("F:G")))
If rngB Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each rg In rngB
If rg.Interior.ColorIndex = 6 Then
zz = rg.Row
Cells(4, 2).Copy
Cells(zz, 2).PasteSpecial xlPasteFormulas
Cells(4, 5).Copy
Cells(zz, 5).PasteSpecial xlPasteFormulas
Range(Cells(4, 8), Cells(4, 10)).Copy
Cells(zz, 8).PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
Cells(rg.Row, 2) = Cells(rg.Row, 2)
Cells(rg.Row, 5) = Cells(rg.Row, 5)
Range(Cells(rg.Row, 8), Cells(rg.Row, 10)) = _
Range(Cells(rg.Row, 8), Cells(rg.Row, 10)).Value
End If
Next rg
rngB.Cells(1).Select
Application.EnableEvents = True
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Mehrfachauswahl im Worksheetchange
29.10.2006 10:15:36
floh
Hallo Erich,
das funktioniert ja schon mal wunderbar.
danke für diesen Lösungsansatz.
hierzu noch zwei Fragen:
1.
ist es möglich das Ereignis anstatt vom Colorindex gelb
abhängig von Zeile A zu machen?
Also wenn Spalte A leer dann führe Ereignis aus
2.
rngB.Cells(1).Select habe ich in rngB.Cells(1,2).Select abgewandelt
so bewegt sich der Cursor nach links und ich muss nicht immer die Entertaste 2x betätigen.
Besser wäre, wenn sich der Cursor bei Enter nach unten bewegt
und bei Betätigung der Pfeiltasten nach links/rechts unten oben
geht das ?
Anscheinend bist Du ziemlich fitt in VBA
Vieleicht kannst Du mir deshalb auch noch bei 2 weiteren Fragen zu diesem Beispiel helfen ?
3.
wenn ich in Spalte B den Wert der ersten Pos ändere (in Spalte A steht dann immer ein x)
sollen auch die nachfolgenden Positionen geändert werden.
Zum Beispiel : wenn ich also in B11 die Bezeichnung "A" auf "F" ändere,
soll auch die Bezeichnung in den Zellen B12:B17 auf "F" geändert
und in C12:C17 eine Formel eingefügt und in Werte umgewandelt werden,
indem ich die Formeln aus B4:C4 einkopiere und wieder in Werte umwandle.
geht das?
4.
wenn sich in der Tabelle "Daten" ein Wert in Spalte C oder D ändert,
soll der Wert auch automatisch im Tabellenblatt "Ereignis" übernommen werden.
Wenn sich also z.B der Name Kai aus Zelle C8 in den Namen Schröder ändert oder der Faktor aus D8 von 1 auf 1,1 ändert, sollen diese Werte natürlich auch in das Tabellenblatt Ergebnis übernommen werden.
Das soll auch wieder über das Einfügen der Formeln aus den Zellen E4 und H4 in der Tabelle "Erbebnis" in den entsprechenden Zeilen (mit dem Wert 1 in Spalte D) passieren (weil die Formeln auch komplizierter als nur Sverweis sein könnten)
Funktioniert das vieleicht im Hintergrund , ohne das sich das Tabellenblatt Ereignis zwischendurch einblendet?
Für Deine Hilfe wäre ich sehr dankbar.
Mit freundlichen Grüßen floh
Anzeige
AW: Mehrfachauswahl im Worksheetchange
29.10.2006 10:40:29
Erich
Hallo floh,
warum willst du unbedingt die Formeln durch Werte ersetzen? Wenn du das nicht tust, erledigen sich 3. und 4. ganz von selbst...
(In Spalte B muss nur in den richtigen Zeilen "=INDEXZ" stehen.)
Ich würde das so machen:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngB As Range, rg As Range, zz As Long
Set rngB = Intersect(Target, Rows("5:65536"), Union(Columns("D"), Columns("F:G")))
If rngB Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each rg In rngB
zz = rg.Row
If IsEmpty(Cells(zz, 1)) Then                ' #1: wenn Zelle in Sp. A leer
Range(Cells(4, 2), Cells(4, 3)).Copy      ' aus #3: Formeln auch aus C
Cells(zz, 2).PasteSpecial xlPasteFormulas
Cells(4, 5).Copy
Cells(zz, 5).PasteSpecial xlPasteFormulas
Range(Cells(4, 8), Cells(4, 10)).Copy
Cells(zz, 8).PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
'                                                  ' zu #3 und #4: Formeln bleiben stehen
'         Range(Cells(rg.Row, 2), Cells(rg.Row, 3)) = _
'            Range(Cells(rg.Row, 2), Cells(rg.Row, 3)).Value
'         Cells(rg.Row, 5) = Cells(rg.Row, 5)
'         Range(Cells(rg.Row, 8), Cells(rg.Row, 10)) = _
'            Range(Cells(rg.Row, 8), Cells(rg.Row, 10)).Value
End If
Next rg
rngB.Cells(1).Offset(1, 0).Select               ' #2: Cursor nach unten
Application.EnableEvents = True
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Mehrfachauswahl im Worksheetchange
29.10.2006 11:14:16
floh
Hallo Erich,
Das ging jetzt aber super schnell,
Vielen Dank .
Hintergrund ist, das sich in den Orginaltabellen
ziemlich viele Berechnungszeilen (bis zu 14000 Zeilen) befinden.
und somit bei jeder Änderung die ganze Tabelle durchgerechnet wird.
Was ziemlich viel Zeit kostet.
Die Umstellung auf manuelle Berechnung bringt nicht den gewünschten Effekt.
Auch sind die Formeln meistens vielfältiger und komplizierter als in dieser Beispieldatei.Ich denke formelmäßig habe ich bis hin zur Namendefinierung schon alles ausgereizt.
Dein Makro bringt schon einen super Fortschritt.
Aber wenn es noch weitere Schritte gibt um Berechnungszeit zu sparen,
würde ich das gerne nutzen.
Für Deine Hilfe zu Frage 3 und 4 wäre ich Dir sehr dankbar.
Mit freundlichen Grüßen floh
Anzeige
AW: Mehrfachauswahl im Worksheetchange
29.10.2006 12:32:31
Reinhard
Hi floh,
Berechning auf manuell stellen. Wenn in Tabelle1!A1 steht: =B1+C1
dann im Codeteil von Tabelle1

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "B1" And Target.Address(0, 0) <> "C1" Then Exit Sub
Range("A1").Calculate
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
AW: Mehrfachauswahl im Worksheetchange
29.10.2006 15:30:55
floh
Hallo Reinhard,
erst mal danke für Dein Makro.
Habe eben versucht dieses in Gang zu bekommen.
Klappt irgendwie nicht
im Klartext ich verstehe dieses Makro nicht.
Vielleicht kannst Du eine kurze Erklärung geben ?
oder die Beispieltabelle benutzen ?
Mit freundlichen Grüßen
floh
Anzeige
AW: Worksheet_Change
29.10.2006 20:07:39
Erich
Hallo floh(?),
so recht glücklich wirst du damit vielleicht nicht werden, aber probiers halt mal aus:
https://www.herber.de/bbs/user/37765.xls
Probleme treten auf, wenn in "Daten" Nummern geändert oder gelöscht werden.
Da in "Ergebnis" ja keine Formeln stehen, bleiben in den Zeilen mit den alten Nummern die alten Werte einfach stehen.
Bei den SVERWEIS-Formeln in Zeile 4 habe ich nebenbei den 3. Parameter ergänzt (0 oder FALSCH).
Dann erscheint #NV, wenn es zu einer Nr keinen Satz in "Daten" gibt.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Worksheet_Change
30.10.2006 15:50:51
floh
Hallo Erich,
Das ist ganz genau was ich wollte.
Habe in "Ergebnis" einen Prüflauf eingefügt,
indem ich einfach die Spalte D kopiere und als Wert an der selben
Position wieder einfüge.
Dadurch wird ja das komplette Tabellenblatt neu durchgerechnet.
Mit besten Dank
floh
Danke für Rückmeldung - freut mich! (oT)
30.10.2006 17:40:16
Erich

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige