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

VBA Lösung?

VBA Lösung?
26.02.2007 17:18:00
Fritz_W
Hallo Forum,
wie kann ich erreichen, dass immer dann wenn in die Formel in der Zelle C1 den Wert 1 liefert, der Inhalt aus der Zelle M3 in die Zelle C18 geschrieben wird. Brauche wohl eine VBA-Lösung, da der Wert in C18 zwar dann "aktualisiert" werden soll, wenn sich der Zellinhalt von C1 erneut (von einem anderen Wert) auf die Zahl 1 ändert, jedoch nicht, wenn sich lediglich der Inhalt in der Zelle M3 ändert.
Vielen Dank für eure Unterstützung.
Mfg
Fritz

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Lösung?
26.02.2007 18:08:39
Daniel
Hallo
ich hoffe, daß ichs richtig verstanden habe.
dieser Code in Modul des bertroffenen Tabellenblatts.

Private Sub Worksheet_Calculate()
Static check As Variant
If check = 1 Then
check = Range("C1").Value
Else
If Range("C1").Value = 1 Then
Range("C18").Value = Range("M3").Value
check = 1
End If
End If
End Sub

Gruß, Daniel
AW: VBA Lösung?
26.02.2007 18:25:00
Fritz_W
Hallo Daniel,
du hast mich richtig verstanden, denn es funktioniert wie gewünscht.
Vielen Dank für die Hilfe
Schönen Gruß
Fritz
AW: VBA Lösung?
26.02.2007 18:52:00
Erich
Hallo Daniel und Fritz,
noch ne Variante:

Private Sub Worksheet_Calculate()
Static check As Variant
If IsError(Range("C1")) Then check = 0: Exit Sub
If check <> 1 And Range("C1") = 1 Then Range("C18") = Range("M3")
check = Range("C1").Value
End Sub
IsError ist sinnvoll, wenn in C1 eine Formel steht, z. B. 1/B1
Fehlerwerte in M3 stören nicht.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: VBA Lösung?
26.02.2007 20:17:00
Fritz_W
Hallo Erich,
danke für den Lösungsvorschlag.
Ich kann von euch Profis noch so viel lernen, deshalb freue ich mich über jeden Beitrag.
P.S.
Ich würde gerne im gleichen Tabellenblatt noch folgendes verwirklichen. Wenn sich der Zellwert in der Zelle M28 ändert, sollte der Bereich C3:C12 gelöscht werden (Zellinhalt löschen). Könnte man dies in den vorherigen Code miteinbauen?
Gruß und nochmaligen Dank
Fritz
AW: VBA Lösung?
26.02.2007 22:47:56
Erich
Hallo Fitz,
auch das noch! ;-))
Das ginge z. B. so:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Static varC1 As Variant, varM28 As Variant, vM28 As Variant
Application.EnableEvents = False
If IsError(Range("C1")) Then
varC1 = 0
Else
If varC1 <> 1 And Range("C1") = 1 Then Range("C18") = Range("M3")
varC1 = Range("C1").Value
End If
If IsError(Range("M28")) Then vM28 = "#" & Chr(255) & "#ERR#" Else vM28 = Range("M28")
If varM28 <> vM28 Then Range("C3:C12").ClearContents
varM28 = vM28
Application.EnableEvents = True
End Sub
Die Zeichenkette bei Fehler in vM28 sollte im normalen Leben nicht vorkommen...
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Ergänzung/Korrektur
26.02.2007 22:57:23
Erich
Hallo Fritz,
damit wird nach dem Öffnen der Mappe vor der ersten Änderung von M28 nicht gelöscht:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Static varC1 As Variant, varM28 As Variant, vM28 As Variant
Application.EnableEvents = False
If IsError(Range("C1")) Then
varC1 = 0
Else
If varC1 <> 1 And Range("C1") = 1 Then Range("C18") = Range("M3")
varC1 = Range("C1").Value
End If
If IsError(Range("M28")) Then vM28 = "#" & Chr(255) & "#ERR#" Else vM28 = Range("M28")
If varM28 <> vM28 And Not IsEmpty(varM28) Then Range("C3:C12").ClearContents
varM28 = vM28
Application.EnableEvents = True
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Ergänzung/Korrektur
27.02.2007 13:46:00
Fritz_W
Hallo Erich,
zunächst vielen Dank, dass Du mir nochmals Hilfe angeboten hast.
Leider funktioniert das nicht und ich hab jetzt auch ein etwas schlechtes Gewissen (weil ich nicht gleich auf den bereits vorhandenen WorksheetChange Code hingewiesen habe, siehe unten).
Der Code soll in das Modul der Tabelle, in dem neben dem "WorksheetCalculate-Ereignis" auch ein "WorksheetChange-Ereignis-Code" steht (übrigens auch von Dir). Ich hatte geglaubt ("gehofft" wäre vielleicht die zutreffendere Umschreibung), dass die Umsetzung meines letzten "Wunsches" durch die Integration im "WorksheetCalculate Code möglich wäre, was aber nicht der Fall war.
Da zwei WorksheetChangeEreignisse im gleichen Tabellenmodul natürlich nicht funktionieren bin ich nun wieder einmal mit meinem Latein am Ende und auf Deine (Eure) Hilfe angewiesen.
P.S. Weitere Erweiterungen/Änderungen im Modul dieser Tabelle wären dann aber nicht mehr erforderlich!
Gruß und an dieser Stelle nochmals vielen Dank für die Hilfe und das Verständnis!
Gruß
Fritz
Der aktuelle Code im Modul der Tabelle:
Option Explicit
Dim sngT As Single

Private Sub Worksheet_Change(ByVal Target As Range)
Dim zz As Long
Application.EnableEvents = False
If Cells(1, 3) = 1 And sngT = 0 Then
sngT = Timer
ElseIf Cells(1, 3) = 2 And sngT > 0 Then                 ' C ist 3. Spalte
Cells(18, 13) = Application.Round(Timer - sngT, 1)    ' M18 ist cells(18,13)
With Sheets("Tabelle2")
zz = Application.Max(.Cells(Rows.Count, 1).End(xlUp).Row + 1, 5)
.Cells(zz, 1) = Cells(18, 3)
.Range(.Cells(zz, 2), .Cells(zz, 8)) = Range(Cells(18, 11), Cells(18, 17)).Value
End With
sngT = 0
ElseIf Target.Address = "$M$2" Then Range("M3").ClearContents
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Calculate()
Static check As Variant
If IsError(Range("C1")) Then check = 0: Exit Sub
If check <> 1 And Range("C1") = 1 Then Range("C18") = Range("M3")
check = Range("C1").Value
End Sub

Anzeige
AW: Chaos?
27.02.2007 18:47:00
Erich
Hi Fritz,
meinst du das wirklich so wie in dieser Mappe, in der ich das Bisherige zusammengebaut habe?
https://www.herber.de/bbs/user/40735.xls
b>
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
P.S.: Das mit dem schlechten Gewissen ist schon ok, aber nicht übertreiben! ;-)
AW: Chaos?
27.02.2007 19:42:00
Fritz_W
Hallo Erich,
du hast das korrekt "zusammengebaut" und das Makro funktioniert einwandfrei.
Dennoch ist ein weiteres Problem aufgetaucht, das ich nicht bedacht habe.
Die Zellen C14 und C15 enthalten Formeln, die sich auf den Inhalt des Bereichs C3:C12 beziehen und deren Ergebnis vor dem Löschen "gesichert" werden müsste. Vor dem Löschen des Bereichs C3:C12 sollte deshalb der Zellinhalt aus C14 nach K18 und der aus C15 nach L18 kopiert werden (Kopieren und - da in C14/C15 Formeln stehen - als Werte nach K18 bzw. L18 einfügen).
Ich hoffe, du kannst mir hier noch helfen.
Auf jeden Fall vielen Dank für Deine bisherige Arbeit und die Unterstützung.
Gruß
Fritz
P.S.
Nachdem ich das mit dem schlechten Gewissen nicht übertreiben soll, ist es für mich zumindest ein absolutes Muss, Dir gegenüber ganz deutlich meine Dankbarkeit zum Ausdruck bringen zu können!
Anzeige
AW: Kein Chaos
27.02.2007 20:10:00
Erich
Hi Fritz,
eine Rückfrage:
Wenn C3:C12 2mal hintereinander gelöscht wird (kann ja vorkommen),
sollen nach dem 2. Mal die Werte in K18 und L18 leer sein,
oder sollen in K18 und L18 die letzten nichtleeren Werte erhalten bleiben?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Kein Chaos
27.02.2007 20:26:00
Fritz_W
Hallo Erich,
die Werte aus K18 und L18 werden ja in die Tabelle2 kopiert (müsste aus dem Code ersichtlich sein) und können deshalb gelöscht (bzw. sollten später "überschrieben") werden.
Wenn schließlich im Bereich C3:C12 neue Werte eingegeben werden, sollten sich die daraus in C14/C15 ergebenden Zellwerte wieder in K18 und L18 eingetragen werden.
Ich hoffe, ich habe das für Dich nachvollziehbar dargelegt.
Schönen Gruß
Fritz
Anzeige
AW: Kein Chaos
27.02.2007 21:46:29
Fritz_W
Hallo Erich,
der Bereich C3:C12 wird nicht gelöscht und auch der Zelleintrag in C18 erfolgt nicht!
Gruß
Fritz
AW: Kein Chaos - aber ich bin ein Chaot!
27.02.2007 22:02:00
Fritz_W
Hallo Erich,
Entwarnung, alles funktioniert bestens!! Fehler lag - wieder einmal - bei mir!
Vielen Dank für die viele Arbeit, hast mir damit viel Freude bereitet!
Schönen Abend noch
Fritz
Freut mich - auch schönen Abend noch!
27.02.2007 22:31:23
Erich

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige