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

Bereich via VBA überwachen

Bereich via VBA überwachen
29.06.2017 14:27:38
Helmut
Einem wunderschönen Nachmittag
ich möchte in einem Tabellenblatt dem Bereich A1:AH100 überwachen. Sollte in diesem Bereich die Zahlen höher sein als "0", soll eine MsgBox ausgegeben werden. Die Zahlen die höher als „0“ sind werden durch eine Formel in diesem Bereich berechnet.
Ich steh voll auf dem Schlauch. Hilfe!
Danke im Voraus, LG Helmut

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich via VBA überwachen
29.06.2017 17:27:18
ransi
Hallo Helmut,
Versuch mal sowas:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Calculate()
    Dim Arr, Element
    Dim lngCount As Long
    Redim out(lngCount)
    Arr = Range("A1:AH100")
    For Each Element In Arr
        If Element > 0 Then
            Redim Preserve out(lngCount)
            out(lngCount) = Element
            lngCount = lngCount + 1
        End If
    Next
    MsgBox Join(out, " ,")
End Sub


ransi
Anzeige
AW: Bereich via VBA überwachen
29.06.2017 20:23:31
Helmut
Guten Abend ransi
Danke vorerst für deine Hilfe, werde es morgen Früh gleich testen und gebe dir anschließend Bescheid.
Noch einen angenehmen Abend
Lg Helmut
AW: Bereich via VBA überwachen
30.06.2017 06:49:40
Helmut
Guten Morgen ransi
leider muss ich dir berichten, dass der Code nicht funktioniert! Ich bekomme die Meldung: Laufzeitfehler 13! Typen unverträglich!
Wie gesagt, die Zahlen die höher als 0 sind werden in diesem Bereich mit einer Formel ausgegeben. Vielleicht liegt dort das Problem. Kannst du mir oder irgendjemand anders eventuell noch weiterhelfen?
Ich sage jetzt schon danke für jede Hilfe, LG Helmut
Anzeige
AW: Bereich via VBA überwachen
30.06.2017 08:35:21
Hajo_Zi
ich gehe mal davon aus das ransi das getestet hat.
nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich möchte gerne den Fehler im Original sehen.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten anonymisieren bzw. pseudonymisieren.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Anzeige
AW: Bereich via VBA überwachen
30.06.2017 09:42:41
ransi
Hallo Helmut,
ICh habe das getestet.
Der Code funktioniert mit Text und Zahlen.
HAst du Fehlerwerte in dem relevanten Bereich?
ransi
AW: Bereich via VBA überwachen
30.06.2017 09:44:55
ransi
HAllo,
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit



Private Sub Worksheet_Calculate()
    Dim Arr, Element
    Dim lngCount As Long
    Redim out(lngCount)
    Arr = Range("A1:AH100")
    For Each Element In Arr
        If Not IsError(Element) Then
            If Element > 0 Then
                Redim Preserve out(lngCount)
                out(lngCount) = Element
                lngCount = lngCount + 1
            End If
        End If
    Next
    MsgBox Join(out, " ,")
End Sub


ransi
Anzeige
Es funktioniert! Danke!
30.06.2017 10:43:04
Helmut
Hallo ransi
jetzt haben wir einander vorbei geschrieben. Also dein letzter Code funktioniert! Vielen herzlichen Dank für deine Hilfe. Wünsche dir noch einen angenehmen Tag.
LG Helmut
AW: Bereich via VBA überwachen
30.06.2017 10:36:39
Helmut
Habe jetzt selbst noch einmal ein wenig herumgebastelt..
Folgender Code ist schon aktiv:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
If Environ("USERNAME") = "P12345" Or _
Environ("USERNAME") = "P2356" Or _
Environ("Username") = "P1111111" Then Exit Sub
Set Bereich = Range("A5:AH37") ' Bereich wird überwacht
If Intersect(Target, Bereich) Is Nothing Then
Else
MsgBox "Sie sind nicht berechtigt, änderungen" & vbCr & "am Dienstplan durchzuführen!!!",  _
vbOKOnly, "Info:"
Application.EnableEvents = False
Application.Undo  'Änderungen werden zurückgestellt, außer die von den oben angeführten User`n
Application.EnableEvents = True
End If
End Sub
diese Code berechtigt 3 User Veränderungen in einem ausgewählten Bereich zu tätigen.
Nun möchte ich aber auch im Bereich A41:AH73, dass wenn dort die Zahl größer ist als „0“ eine im MsgBox ausgegeben wird.
Vielleicht kann mir jetzt jemand mit einem fertigen Lösungsansatz zur Seite stehen.
Danke im Voraus, LG Helmut
Anzeige
AW: Bereich via VBA überwachen
30.06.2017 11:09:59
Helmut
Jetzt bin ich doch einmal hier:
der Code den du mir zum Schluss geschickt hast funktioniert nur fehlerhaft. Ich habe zum Beispiel in AJ1 eine Zahl eingetragen und es kommt trotzdem eine MsgBox, obwohl diese Zelle nicht mehr im Bereich integriert ist. Ich habe den Code dann einmal in eine neue Arbeitsmappe eingepackt und auch dort läuft der fehlerhaft.
Vielleicht sollte ich noch einmal erklären, was ich genau möchte: ich habe einen Bereich von zB.: A1:P40. Sobald sich nur in diesem Bereich die Zellen die jeweils mit einer Formel belegt ist ändern, möchte ich eine MsgBox ausgeben. In manchen Zellen habe ich#Wert! darin stehen, bis ein Berechnungsschritt vollzogen ist!
Nun, ich hoffe das sich damit noch einmal genau erklärt habe was ich möchte, bzw. wo das Problem liegt.
LG Helmut, danke vorerst
Anzeige
AW: Bereich via VBA überwachen
02.07.2017 08:57:50
Hajo_Zi
Hallo Helmut,
es kommt ab und zu vor das eine Datei einen Fehler hat, aus welchen Grunde auch immer.
In einer neuen Datei ist es ja ok. Kopiere alles in diese neue Datei.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
AW: Bereich via VBA überwachen
03.07.2017 10:57:00
Helmut
Servus Hajo, Servus Ransi
Danke erstmals für den Hinweis, doch leider hilft mir das auch nach mehreren Versuchen nicht weiter. Nach einigem herumbasteln, habe ich jetzt den Code so weit, dass er halbwegs funktioniert. Nur habe ich jetzt ein Problem mit der 1. MsgBox (Dienstzeitüberschreitung bzw. Ruhezeit…), dass sich diese mehrmals öffnet.
Hier einmal der Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
For Each Zelle In Range("c41:ah71") 'Überprüft ob im Bereich Zahl "1" steht
If Zelle.Text = "1" Then          'wenn "1" dann MsgBox
MsgBox "Dienstzeit Überschreitung bzw. Ruhezeitunterschreitung!", vbOKOnly, "Achtung"
'Exit Sub
End If
Next
If Environ("USERNAME") = "P1234" Or _
Environ("USERNAME") = "P0123" Or _
Environ("Username") = "P1234567" Then Exit Sub
Set Bereich = Range("A5:AH37") ' Bereich wird überwacht
If Intersect(Target, Bereich) Is Nothing Then
Else
MsgBox "Sie sind nicht berechtigt, änderungen" & vbCr & "am Dienstplan durchzuführen!!!",  _
vbOKOnly, "info:"
Application.EnableEvents = False
Application.Undo  'Änderungen werden zurückgestellt, außer die von den oben angeführten User`n
Application.EnableEvents = True
End If
End Sub
vielleicht kann mir jetzt jemand weiterhelfen.
Vielen herzlichen Dank für eure Mühe, LG Helmut
Anzeige
AW: Bereich via VBA überwachen
03.07.2017 17:58:39
Hajo_Zi
Dim BoMsgBox
For Each Zelle In Range("c41:ah71") 'Überprüft ob im Bereich Zahl "1" steht
if bomsgbox=False then
If Zelle.Text = "1" Then 'wenn "1" dann MsgBox
bomsgbox=True
Gruß Hajo
Funktioniert!!! Danke!!!!
04.07.2017 07:09:30
Helmut
Guten Morgen Hajo
wie nicht anders zu erwarten, funktionierte es! Vielen herzlichen Dank für deine Hilfe. Auch bei Ransi möchte ich mich noch einmal für die Mithilfe bedanken.
glg Helmut
Funktioniert!!! Danke!!!!
04.07.2017 07:09:31
Helmut
Guten Morgen Hajo
wie nicht anders zu erwarten, funktionierte es! Vielen herzlichen Dank für deine Hilfe. Auch bei Ransi möchte ich mich noch einmal für die Mithilfe bedanken.
glg Helmut
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige