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

VBA

VBA
10.09.2017 23:38:00
Dmitrij
Hallo Excelexperten,
ich brauche Eure Hilfe.
Mein Problem ist: VBA Code
Wenn Zelle K11 = 1, dann soll automatisch Makro gestartet werden. Dieses Makro lässt im Sekundentakt 100x beep, beep erklingen. Sobald K11 = 0, dann kein beep, beep mehr.
Kann mir jemand weiterhelfen?

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA
11.09.2017 05:41:58
Hajo_Zi
ist es ein Formel oder Eingabe?

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
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: VBA
11.09.2017 08:18:46
Dmitrij
es ist die Aufgabenstellung die ich mit Eure Hilfe lösen will.
Bitte um Hilfestellung
Gruß D.Lamm
AW: VBA
11.09.2017 08:43:25
Peter(silie)
Hallo,
in Code v. Tabellenblatt:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 11 And Target.Column = 11 Then
If Target.Value = 1 Then Timer_.StartTimer
If Target.Value = 0 Or Target.Value = "" Then Timer_.StopTimer
End If
End Sub
In ein eigenes Modul(Ich habe das Modul Timer_ genannt):
Option Explicit
Private MyTimer As Boolean
Public Sub StartTimer()
MyTimer = True
Application.OnTime Now() + TimeValue("00:00:01"), "Tick"
End Sub
Public Sub StopTimer()
MyTimer = False
End Sub
Public Sub Tick()
If MyTimer Then
Beep
Application.OnTime Now() + TimeValue("00:00:01"), "Tick"
End If
End Sub
Hier eine Beispiel Mappe: https://www.herber.de/bbs/user/116147.xlsm
Anzeige
Nachtrag...
11.09.2017 08:48:34
Peter(silie)
So etwas sollte man nicht benutzen.
Btw. 100x einen Beep Sound in der Sekunde zu erzeugen ist... schwachsinnig.
Wenn du willst, dass Excel crasht oder ein Nutzer dir eine Schallert,
dann mach jede Sekunde 100x den Beep sound.
Anstelle von Auditiven hinweisen, solltest du auf Visuelle gehen.
Zelle rot färben, MsgBox öffnen, etc.
AW: Nachtrag...
11.09.2017 10:04:20
Dmitrij
Danke für die schnelle Hilfe.
Ich habe deine Version ausprobiert, funktioniert.
Aber wenn ich den Code in meine Datei einfüge, funktioniert es nicht.
Nun zu meinem Verständnis.
Ich habe diesen Code in meine Tabelle 4 eingefügt:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 11 And Target.Column = 11 Then
If Target.Value = 1 Then Timer_.StartTimer
If Target.Value = 0 Or Target.Value = "" Then Timer_.StopTimer
End If
End Sub
Diesen Code habe ich in einem neu erstellten Modul eingefügt:
Option Explicit
Private MyTimer As Boolean
Public Sub StartTimer()
MyTimer = True
Application.OnTime Now() + TimeValue("00:00:01"), "Tick"
End Sub
Public Sub StopTimer()
MyTimer = False
End Sub
Public Sub Tick()
If MyTimer Then
Beep
Application.OnTime Now() + TimeValue("00:00:01"), "Tick"
End If
End Sub
Was habe ich falsch gemacht?
In der Aufgabenstellung stand auch 100x im Sekundentakt, nicht 100x pro Sekunde.
Gruß D.Lamm
Anzeige
AW: Nachtrag...
11.09.2017 10:21:35
Peter(silie)
Hallo,
hast du das Modul auch "Timer_" genannt?
Sonst geht es nicht
Betroffener Code: Timer_.StartTimer 

AW: Nachtrag...
11.09.2017 10:34:44
Dmitrij
Nein, habe ich nicht.
Jetzt habe ich auf Timer_ geändert, macht aber auch kein beep,beep.
AW: Nachtrag...
11.09.2017 10:44:54
Daniel
HI
das Problem dürfte sein, dass das Beepen über dieses Event gestartet wird:
Private Sub Worksheet_Change(ByVal Target As Range)
das Change-Event wird aber nur ausgelöst, wenn du den Wert von Hand in der Zelle änderst.
Steht in der Zelle eine Formel und das Formelergebnis ändert sicht, löst das Change-Event nicht aus (daher auch meine Frage im anderen Beitrag)
Gruß Daniel
Anzeige
AW: VBA
11.09.2017 10:15:24
Dmitrij
Hallo,
die 1 kommt aus der SPS. In der Zelle steht folgende Formel:
=RSLINX|ROLLADEN!'B3:5/1,L1,C1'
D.h. wenn die SPS-Adresse B3:5/1 auf 1 geht (Fehlermeldung) soll es im Sekundentakt beepen.
Gruß D.Lamm
AW: VBA
11.09.2017 09:41:04
Daniel
HI
wie kommt denn die 1 und die 0 in die Zelle K11?
wird die da von Hand eingetragen oder steht da eine Formel?
Gruß Daniel
AW: VBA
11.09.2017 10:13:12
Dmitrij
Hallo,
die 1 kommt aus der SPS. In der Zelle steht folgende Formel:
=RSLINX|ROLLADEN!'B3:5/1,L1,C1'
D.h. wenn die SPS-Adresse B3:5/1 auf 1 geht (Fehlermeldung) soll es im Sekundentakt beepen.
Gruß D.Lamm
AW: VBA
11.09.2017 10:31:10
Daniel
HI
dann brauchst du ne permanente Überwachung.
Das hier muss ins Modul1 (oder in ein anderes allgemeines Modul):
Option Explicit
Public NächsteAusführung As Date
Sub BeepWennFehler()
If ThisWorkbook.Sheets("Tabelle1").Range("A1").Value = 1 Then Beep
NächsteAusführung = Now + TimeSerial(0, 0, 1)
Application.OnTime NächsteAusführung, "BeepWennFehler"
End Sub
und das hier ins Modul "DieseArbeitsmappe"
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If NächsteAusführung > Now Then Application.OnTime NächsteAusführung, "BeepWennFehler",  _
Schedule:=False
End Sub
Private Sub Workbook_Open()
Call BeepWennFehler
End Sub
Tabellenblatt und Zelle bitte anpassen, ich bin zu faul das jetzt nochmal nachzuschauen, du weisst ja welche Zelle du prüfen musst.
die Überwachung startet automatisch beim Öffnen der Datei oder wenn du das Makro "BeepWennFehler" ausführst.
Gruß Daniel
Anzeige
AW: VBA
11.09.2017 11:06:15
Dmitrij
Hallo,
fast haben wir es geschafft.
Wenn ich von Hand die 1 in Zelle K11 eintrage, funktioniert es wunderbar.
Wenn ich aber meine SPS anschließe so bekomme ich die Fehlermeldung:
Laufzeitfehler 13, Typen unverträglich.
Ich denke dass es mit der Formel in der Zelle =RSLINX|ROLLADEN!'B3:5/1,L1,C1' zusammenhängt.
Ich frage Zelle K11 mit der Formel =RSLINX|ROLLADEN!'B3:5/1,L1,C1' auf den Zustand 0 oder 1 ab.
Hast du eine Idee dafür?
AW: VBA
11.09.2017 11:09:42
Daniel
Hi
sicher dass in der Zelle 0 oder 1 als Zahl steht?
ein Fehlerwerte solle da nicht erscheinen, ansonsten muss die Abfrage anders gemacht werden.
die Formel =RSLINX|ROLLADEN!'B3:5/1,L1,C1' sieht für mich nicht wie eine normale Excelformel aus, damit kann ich nichts anfangen.
Gruß Daniel
Anzeige
AW: VBA
11.09.2017 11:14:07
Dmitrij
Hallo,
ja, in der Zelle steht definitiv 1 oder 0.
Gruß D.Lamm
AW: VBA
11.09.2017 11:28:16
Daniel
Hi
in welcher Programmzeile tritt der Fehler auf?
Gruß Daniel
AW: VBA
11.09.2017 11:42:30
Dmitrij
Hallo,
sobald ich das Programm aufrufe.
Ich habe jetzt Inhalt von Zelle K11 in Zelle K23 kopiert, und frage in VBA K23 ab.
Das funktioniert.
Vielen, vielen Dank für die Hilfe.
Falls du aber noch Idee hast wie man das umgehen kann, wäre es ganz gut.
Gut wäre es noch, wenn bei dieser Fehlermeldung eine Zelle in einem anderen Tabellenblatt im Sekundentakt paralell noch rot blinkt. Könntest du mir dabei helfen?
Gruß D.Lamm
Anzeige
AW: VBA Fehlerabbruch
11.09.2017 11:45:43
Daniel
normalerweise stoppt Excel das Programm in der Zeile die den Fehler verursacht und markiert diese gelb.
Welche Zeile ist das?
Gruß Daniel
AW: VBA Fehlerabbruch
11.09.2017 12:28:06
Dmitrij
Aha, das meinst du. Hier ist die Zeile:
If ThisWorkbook.Sheets("Info SPS").Range("K11").Value = 1 Then Beep
Gruß D.Lamm
AW: VBA Fehlerabbruch
11.09.2017 12:31:04
Werner
Hallo Dimitrij,
kann es sein, dass in der Zelle K11 ein Text steht, der wie eine Zahl aussieht?
Versuche mal:
If ThisWorkbook.Sheets("Info SPS").Range("K11").Value = "1" Then Beep
Gruß Werner
AW: VBA Fehlerabbruch
11.09.2017 12:53:12
Dmitrij
Hallo,
habe "1" eingegeben, gleiches Ergebnis.
In der Zelle steht die Formel =RSLINX|ROLLADEN!'b3:5/1,L1,C1', die mir eine 1 oder 0 ausgibt.
Gruß D.Lamm
Anzeige
AW: VBA Fehlerabbruch
11.09.2017 13:15:03
Daniel
Hi
probier mal If ThisWorkbook.Sheets("Info SPS").Range("K11").Text = "1" Then Beep
Gruß Daniel
AW: VBA Fehlerabbruch
11.09.2017 13:45:05
Dmitrij
Suuuuupeeeeeer.
Das Problem ist gelöst. Herzlichen Dank an Alle.
Gut wäre es noch, wenn bei dieser Fehlermeldung eine Zelle in einem anderen Tabellenblatt im Sekundentakt paralell noch rot blinkt und Msg "Bitte Türen schließen" ausgibt.
Wenn es dir nichts ausmacht, möchte ich Dich bitten mir zu helfen.
Gruß D.Lamm
AW: VBA Fehlerabbruch
11.09.2017 16:52:40
Daniel
HI
Msgbox ist ungünstig, weil eine Msgbox alle weiteren Aktivitäten stoppt, bis die Msgbox bestätigt ist.
Eine Zelle, die einen entsprechenden Text ausgibt, kannst du dir ja selber leicht über eine einfachde Formel erstellen.
ansonsten vielleicht noch ein Hinweistext in der Statusleiste des Excelfensters
rot blinken eventuells so:
With Sheets("anderes Blatt").Range("A1").Interior
If ThisWorkbook.Sheets("Info SPS").Range("K11").Text = "1" Then
Beep
if (second(time) mod 2 = 0) then
.ColorIndex = 3
Application.Statusbar = "Achtung Fehler"
else
.ColorIndex = xlnone
.Application.Statusbar ="-----------"
end if
else
if .Colorindex = 3 then .Colorindex = xlnone
Application.Statusbar = False
End if
end with
gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige