Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1656to1660
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

MsgBox bei Veränderung im anderen Tabellenblatt

MsgBox bei Veränderung im anderen Tabellenblatt
27.11.2018 08:04:16
Helmut

Guten Morgen VBA'ler
Ich habe in einer Arbeitsmappe zwei Tabellenblätter. Vorwiegend arbeite ich in TB 1 wo ich einige Berechnungen durchführe, die dann in TB 2 im Bereich A1: A10 den Wert in einer Zelle verändern. Erreicht der Wert einer dieser Zellen in TB2 nun "kleiner gleich 0", soll mir eine MsgBox erscheinen.
Vielleicht hat jemand einen Lösungsvorschlag.
Besten Dank im Voraus, lg Helmut

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MsgBox bei Veränderung im anderen Tabellenblatt
27.11.2018 08:24:48
Werner
Hallo Helmut,
was bedeutet das?
Vorwiegend arbeite ich in TB 1 wo ich einige Berechnungen durchführe
Irgendwo im Blatt 1 machst du ja wohl irgendwelche Eingaben, die dann dazu führen, dass im Blatt 2 im Zellbereich A1:A10 Zelländerungen per Formel erfolgen.
Es wäre enteidend zu wissen, wo im Blatt 1 "händisch" Daten eingegeben werden, die zu den Zelländerungen im Blatt 2 führen.
Man könnte zwar das Worksheet_Calculate vom Blatt 2 verwenden, das hätte dann aber zur Folge, dass dieses Ereignis auslöst, sobald irgendwo im Blatt 2 Formeländerungen erfolgen, auch außerhalb des Bereiches A1:A10.
Gruß Werner
Anzeige
Eingabe in TB 1
27.11.2018 08:32:06
Helmut
Guten Morgen Werner
Vorerst einmal Dankeschön das du mir deine Hilfe anbietest. Also die Eingaben in TB 1 werden im Bereich G5:G55 vorgenommen.
Lg Helmut
AW: Eingabe in TB 1
27.11.2018 08:39:21
Torsten
Warum muss man das wissen?
Wenn eine der Zellen in A1:A10 in TB2 Code in Tabellenblatt 2
Private Sub Worksheet_Calculate()
For Each Zelle In Range("A1:A10")
If Zelle.Value 
Gruss Torsten
AW: MsgBox bei Veränderung im anderen Tabellenblatt
27.11.2018 08:37:49
Beverly
Hi Helmut,
Code im Codemodul TB1:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngZelle As Range
If Not Intersect(Target, Range("B2:B3, C4:D10")) Is Nothing Then '
Zelladressen für die Eingabezellen musst du anpassen.


Anzeige
Hilfe
27.11.2018 11:54:31
Helmut
Grüß euch,
Nach einigen hin und her probieren, bin ich drauf gekommen, dass in TB2 jede Zelle im Bereich A1:A10 extra abgefragt werden müsste, da sonst aufgrund des "0 Wertes" in einer Zelle nicht mehr weitergearbeitet werden kann; sprich: sobald eine Zelle dem Wert null erreicht hat, öffnet sich ständig die MsgBox. Gibt es hierzu noch eine Lösung?
Lg Helmut
AW: Hilfe
27.11.2018 12:05:47
Torsten
Das wolltest du doch so:
Erreicht der Wert einer dieser Zellen in TB2 nun "kleiner gleich 0", soll mir eine MsgBox erscheinen.
Probier mal meinen Code. Der fragt jede Zelle ab in einer Schleife und fuer jede Zelle mit 0 erscheint eine MsgBox.
Gruss Torsten
Anzeige
AW: Hilfe
27.11.2018 13:11:42
Helmut
Hallo Torsten
Das habe ich schon gecheckt, dass dein Code alle Zellen nacheinander abfragt. Jedoch wird der Wert 0 mit einer Formel berechnet. Jetzt habe ich das Problem, dass zehnmal die MsgBox aufgeht, da er zehn Zellen überprüft und in jeder schreibt, dass der Wert null ist!!, obwohl der Wert zum Beispiel 25 ist.
Was läuft hier schief?
LG Helmut
Du musst die Eingabe...
27.11.2018 14:20:18
Beverly
Hi Helmut,
...wieder rückgängig machen, falls sie einen nicht zugelassenes Formelergebnis ermittelt:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngZelle As Range
Dim rngAlt As Range
If Not Intersect(Target, Range("G5:G55")) Is Nothing Then
Set rngAlt = Target
For Each rngZelle In Worksheets("Tabelle2").Range("A1:A10")
If rngZelle  "" Then
MsgBox "Wert in Zelle " & rngZelle.Address & " ist falsch"
Application.EnableEvents = False
Target = rngAlt
Application.EnableEvents = True
Exit For
End If
Next rngZelle
End If
End Sub



Anzeige
AW: Du musst die Eingabe...
27.11.2018 14:44:52
Helmut
Hallo Karin,
Ich muss mir das noch einmal genau ansehen, womöglich habe ich einen Denkfehler. Ich melde mich morgen. Danke vorerst an alle für eure Hilfe, weis es sehr zu schätzen!
Lg Helmut
AW: Du musst die Eingabe...
28.11.2018 08:26:57
Helmut
Guten Morgen Karin, guten Morgen VBA'ler
Wie gestern geschrieben, hatte ich einen totalen Denkfehler. Ein Beispiel: Ich habe in TB1 in Zelle A1 eine bestimmte Anzahl von „Äpfel". In TB 2 in Zelle G5 werden vom Istbestand der „Äpfel“ über eine Formel die „Äpfel“ von TB1 abgezogen. Sollte ich also in TB 1 die Anzahl der „Äpfel“ so verringern, dass in TB 2 der Wert „0" in Zelle G5 erreicht wird, soll mir eine MsgBox erscheinen. Weiters, in TB 1 in Zelle A2 habe ich eine bestimmte Anzahl Birnen „Birnen“, in TB 2 in Zelle G6 wird der Bestand der „Birnen“ berechnet. Usw.
Ich möchte also über eine MsgBox wissen, wann die Äpfel, Birnen usw. zu Ende gehen.
Jetzt schon recht herzlichen Dank für eure Hilfe.
Lg Helmut
Anzeige
Allso ist dein Tabellenaufbau anders herum...
28.11.2018 16:06:11
Beverly
Hi Helmut,
...als du zuerst geschildert hast - Zitat Eröffnungsbeitrag: "Ich habe in einer Arbeitsmappe zwei Tabellenblätter. Vorwiegend arbeite ich in TB 1 wo ich einige Berechnungen durchführe, die dann in TB 2 im Bereich A1: A10 den Wert in einer Zelle verändern. "
Die Eingabe erfolgt nun jedoch in A1:A10 in TB1 und geprüft werden sollen G5:G55 in TB2? Mein Code macht genau das was du gerade als Ziel geschildert hast - sobald bei einer Eingabe in der anderen Tabelle ein Wert 0 oder weniger beträgt, erscheint die MsgBox. Allerdings musst du die Bereiche im Code nun austauschen, denn ich musste schließlich von deiner ersten Beschreibung ausgehen.


Anzeige
AW: Allso ist dein Tabellenaufbau anders herum...
29.11.2018 10:43:20
Helmut
Hallo Karin grüß euch VBA'ler
Ich werde einfach nicht schlau, daher lade ich eine Beispieldatei mit hoch. Im TB Checkliste wird in Spalte F eine Zahl eingetragen. In Spalte G wird die Checkbox aktiviert, somit wird im TB Materialbedarf die dazugehörige Spalte gesucht und der Wert vom TB Checkliste eingetragen. Im TB Lagerbestand wird zugleich der Bestand +-berechnet. Nun möchte ich wenn ich im TB Checkliste eine Zahl eingebe und die daneben liegende Checkbox aktiviere und gleichzeitig der Lagerbestand kleinergleich 0 ist, mir eine MsgBox erscheint.
Eine kleine Hilfe für meine Datei: damit der Lagerbestand für Versuchszwecke eurerseits wieder die ursprüngliche Menge erreicht, muss im TB Materialbedarf der Button „? Materialbedarf löschen?“ gedrückt werden.
Vielleicht ist es jetzt einfacher, mir professionelle Hilfe zu leisten. Besten Dank im Voraus, lg Helmut
https://www.herber.de/bbs/user/125758.xlsm
Anzeige
AW: Allso ist dein Tabellenaufbau anders herum...
29.11.2018 18:36:34
Beverly
Hi Helmut,
das Problem musst du leider selbst lösen - deine hochgeladene Mappe ist mit einem Kennwort geschützt und ich knacke keine fremden Passwörter.


Hier das Passwort!
29.11.2018 20:26:08
Helmut
Guten Abend Karin
Ups Sorry, das war nicht absichtlich! Tut mir leid, ich hoffe, dass ich trotzdem auf deine Hilfe zählen kann, wir sind ja schon so weit gekommen! Passwort: 1234
Halt der Klassiker!
Besten Dank und einen schönen Abend wünsche ich
Lg Helmut
Wann soll denn nun die MsgBox...
29.11.2018 22:53:43
Beverly
Hi Helmut,
...angezeigt werden - wenn der Eintrag in Spalte F (also nicht A oder G!!!) gemacht wird oder wenn das Kontrollkästchen aktiviert wird? Und wie wird "im TB Materialbedarf die dazugehörige Spalte gesucht und der Wert vom TB Checkliste eingetragen"? Dazu kann ich keinen Code finden. Sorry, aber ich verstehe absolut nicht was du da eigentlich machen willst.


Anzeige
AW: Wann soll denn nun die MsgBox...
30.11.2018 06:58:07
Helmut
Guten Morgen Karin
Zitat wann soll die MsgBox angezeigt werden-wenn der … also der Wert aus Spalte F wird erst nach dem Aktivieren des Kontrollkästchen in das TB Materialbedarf eingetragen (via Formel! Siehe TB Materialbedarf[Spalte H = Hilfsspalte in TB Checkliste, jedoch ausgeblendet]); Zitat:Und wie wird "im TB Materialbedarf die dazugehörige Spalte gesucht und der Wert vom TB Checkliste eingetragen"? im TB Materialbedarf ist die Spalte F ausgeblendet, dort steht ein Bezug, und in den Spalten g9:AN 100 ist auch jeweils eine Formel enthalten.
Also wenn ich in Checkliste einem Wert eintrage und das Kontrollkästchen aktiviere wird in Materialbedarf die in der Checkliste eingetragene Zahl in die dazugehörige Spalte des Materialbedarf eingetragen und weiters im TB Lagerbestand in Spalte G abgezogen. Wenn nun in der Spalte G der Wert kleiner gleich 0 ist, sollte eine MsgBox erscheinen.
Ich denke trotzdem, dass wir auf einen guten Weg sind.
Lg Helmut
Anzeige
Also geht es nicht darum...
30.11.2018 10:56:57
Beverly
Hi Helmut,
...den Wert zu überprüfen wenn er eingetragen wird sondern erst dann, wenn das Kontrollkästchen aktiviert wird - das ist aber etwas völlig anderes als du in deinem Eröffnungsbeitrag geschrieben hast.
In R9 Tabelle "Materialbedarf" steht keine Formel sondern der Wert 24 ist fix eingetragen...
Weiterhin haben die Artikel in "Lagerbestand" eine andere Bezeichnung als in "Materialbedarf" und in "Checkliste". So kannst du die Artikel in "Lagerbestand" niemals eindeutig zuordnen - folglich ist keine Lösung mittels VBA-MsgBox möglich und du musst bei deiner bedingten Formatierung bleiben, es sei denn, du passt die Artikelbezeichnung dahingehend an, dass sie in allen 3 Tabellenblättern identisch ist. Ich frage mich sowieso, wie man unterschiedliche Bezeichnungen für den selben Gegenstand verwenden kann - da ist das Chaos doch vorprogrammiert...


AW: Also geht es nicht darum...
30.11.2018 12:49:36
Helmut
Mahlzeit Karin
Erstmals recht herzlichen Dank für deine Geduld die du hier aufbringst! Ich habe jetzt noch einmal eine Beispiel Datei hochgeladen. Im TB Checkliste und im TB Materialbedarf habe ich die Artikel die gleich sind gelb markiert. Wenn du einmal in den Artikel hineinklickst, dann siehst du eine Formel wo der Bezug herkommt. Dasselbe habe ich jetzt auch im Lagerbestand gemacht. (Dies war vorher nicht so. Tut mir leid).
Was was betrifft Zitat:In R9 Tabelle "Materialbedarf" steht keine Formel sondern der Wert 24 ist fix eingetragen... ich habe den VBA Code jeweils ausführlich dokumentiert (siehe VBA Projekt Tabelle Materialbedarf).: Beim Aktivieren des Kontrollkästchens wird die Formel im TB Materialbedarf durch den Wert aus der Zelle in TB Checkliste ersetzt!
Ich gebe nicht auf und ich rechne trotzdem noch mit einer Hilfe. Besten Dank im Voraus und ein schönes Wochenende sollten wir uns nicht mehr voneinander lesen.
Lg Helmut
https://www.herber.de/bbs/user/125788.xlsm
Lösungsvorschlag
30.11.2018 15:47:27
Beverly
Hi Helmut,
Frage 1: weshalb ersetzt du in Tabelle "Materialbedarf" die Formel durch den Wert? Der Sinn erschließt sich mir nicht - m.E. ist das nicht erforderlich. Ich habe den betreffenden Code mal auskommentiert. Den Schalter "Materialbedarf löschen" kannst du dann auch weglassen (betreffende Prozedur ist auch auskommentiert).
Frage 2: weshalb prüfst du, ob die Differenz auch = 0 sein darf? M.E. reicht kleiner 0, denn der Lagerbestand darf doch sicher auch 0 betragen - oder? Ich habe das jetzt mal nur mit kleiner 0 realisiert - falls du doch auch 0 integrieren willst musst du das im Klassenmodul clsCheckBox entsprechend ändern.
Da du das ganze bei Aktivierung der Kontrollkästchen realisieren willst, braucht auch jedes Kontrollkästchen den betreffenden Code. Das wäre bei der Anzahl an Kontrollkästchen ziemlich aufwendig - aber in solch einem Fall kann man das über Klassenprogrammierung realisieren, sodass der Code nur einmalig vorhanden sein muss, sich aber auf jedes relevante Steuerelement bezieht.
https://www.herber.de/bbs/user/125794.xlsm


Noch nicht ganz
01.12.2018 10:26:40
Helmut
Guten Morgen Karin
Soweit bin ich mit deinem Lösungsvorschlag sehr zufrieden. Habe ihn soeben getestet. Was mir jetzt jedoch aufgefallen ist und was unbedingt geändert gehört wäre, im TB Checkliste ist der Button "Drucken". Damit werden alle Werte die ich eingefügt habe gelöscht und alle Checkboxen deaktiviert. Nun ist es aber so, dass im TB Materialbedarf ja auch der Wert wieder gelöscht wird und auch der im Lagerbestand wird wieder auf den alten Stand zurückgesetzt. Ein Beispiel: ich habe 50 Stück 1. Hilfe Koffer zu überprüfen. Ich nehme jetzt den Koffer mit der Nr. 123. So gehe ich die ganze Checkliste durch. Sollte ich zum Beispiel jetzt 2 Stück Handschuhe brauchen und 5 Stück Pflaster, trage ich die in Spalte F der Checkliste ein und aktiviere die jeweilige Checkbox. Nun werden mir die 2 Stück Handschuhe und die 5 Stück Pflaster vom Lagerbestand abgezogen. Am Ende drücke ich den Button „drucken“ im TB Checkliste und die Spalte F wird geleert und alle Checkboxen werden deaktiviert. Nun ist mein Lagerbestand jedoch wieder auf den „alten Bestand“ also die 2 Stück Handschuhe und die 5 Stück Pflaster die ich jedoch für den Koffer mit der Nr. 123 gebraucht habe sind jetzt im Lagerbestand nicht abgezogen! Nun weißt du, warum ich die Formel im TB Materialbedarf gegen den Wert ersetze was deine Frage Nr. 1 beantworten würde.
Vielleicht kannst du dir dies noch mal kurz ansehen und durchtesten. Jetzt schon recht herzlichen Dank für all deine Leistungen die du für mich erbracht hast und einen schönen 1. Dezember.
LG Helmut
AW: Noch nicht ganz
02.12.2018 09:50:49
Beverly
Hi Helmut,
löse unbedingt die verbundenen Zeilen in Tabelle Lagerbestand auf!!, die Zeilenhöhe kann man schließlich anpassen und verbundene Zellen machen nur Ärger. Dann kannst du nach dem Drucken den Lagerbestand wie folgt aktualisieren:
Private Sub Drucken_Click()
ActiveSheet.Unprotect Password:="1234"
ActiveSheet.PageSetup.PrintArea = "b1:Y41" 'Druckbereich wird markiert
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & Range("b3 ") & Range("j3 ") & Range("j1 ") & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
'Name des Dokuments = Zelle B1 + aktuelles Datum(In diesem Fall QR Codenummer + Datum)
'„ThisWorkbook.Path“: PDF Dokument wird im Ordner der Exceldatei abgespeichert wird
Range("B1").Select
'########################################################################################### _
Dim lngLetzte As Long
Dim oleBox As OLEObject
' Lagerbestand aktualisieren
With Worksheets("Lagerbestand")
lngLetzte = IIf(IsEmpty(.Cells(Rows.Count, 7)), _
.Cells(Rows.Count, 7).End(xlUp).Row, Rows.Count)
.Range(.Cells(5, 7), .Cells(lngLetzte, 7)).Copy
.Range("F5").PasteSpecial Paste:=xlValues
End With
' Checkboxen zurücksetzen und Zellen in Spalte F und I löschen
For Each oleBox In OLEObjects
If TypeName(oleBox.Object) = "CheckBox" Then
oleBox.Object.Value = False
oleBox.TopLeftCell.Offset(0, -1).ClearContents
oleBox.TopLeftCell.Offset(0, 2).ClearContents
End If
Next
'    Range("C1").Select
ActiveSheet.Protect Password:="1234"
End Sub

Hinweis - in deinem Code zum Drucken steht folgendes:
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & Range("b3 ") & Range("j3 ") & Range("j1 ") & ".pdf", Quality:= _
xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
'Name des Dokuments = Zelle B1 + aktuelles Datum(In diesem Fall QR Codenummer + Datum)
Entweder ist der Kommentar falsch oder der Code, denn der bezieht sich auf B3 und nicht auf B1


Alles super
03.12.2018 16:10:35
Helmut
Guten Abend Karin
Es funktioniert soweit alles sehr gut. Einige Anpassungen muss ich noch durchführen. Ich möchte mich ganz herzlich bei dir für deine großartige Leistung bedanken. Auch möchte ich mich für meine Chaos Datei nochmals entschuldigen.
Danke nochmals, lg Helmut

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige