Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

variable Konstante in VBA?

variable Konstante in VBA?
14.08.2017 16:10:17
Thilo
Hallo,
ich habe folgendes Problem.
Eine Datei erhält fortlaufend aktuelle Daten von einer externen Quelle.
Per VBA wird ca. alle 2 Minuten ein Protokollsatz erzeugt. Ein vereinfachtes Beispiel hier:
https://www.herber.de/bbs/user/115451.xls
Die Werte in A1, A2 etc. ändern sich dauernd.
Ist es möglich, das Intervall aus Zelle E1 des Unterblatts "Level 1" variabel einzulesen? (E1 wäre dann eine Formel, die den Text "00:01:58" erzeugt.)
Ich habe probiert, wksData3.Range("E1") statt "00:01:58" einzugeben, aber da ist mir das Programm abgestürzt.
Vielen Dank im voraus,
Thilo

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: variable Konstante in VBA?
14.08.2017 16:12:12
Hajo_Zi
Hallo Thilo,
warum neuen Beitrag?

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: variable Konstante in VBA?
14.08.2017 16:20:37
Thilo
Hallo Hajo,
auf Bitte von Chris. Siehe unter dem anderen Beitrag.
Beste Grüße,
Thilo
auf meinem Mist gewachsen owT.
14.08.2017 16:25:03
ChrisL
.
AW: variable Konstante in VBA?
14.08.2017 16:23:37
Sepp
Hallo Thilo,
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public datTime As Date
Public Const strOntimeProcedure = "subAktion" 'Name der per Timer gestarteten Procedur

Sub StartTimer()
Call subAktion
End Sub

Sub StopTimer()
On Error Resume Next 'falls Timer nicht gestartet wurde
Application.OnTime Earliesttime:=datTime, Procedure:=strOntimeProcedure, schedule:=False
End Sub

Sub subAktion()
Dim wb As Workbook
Dim wksData1 As Worksheet, wksData2 As Worksheet, wksData3 As Worksheet, wksProto As Worksheet
Dim ZeileP As Long, dblWhen As Double
Set wb = ThisWorkbook
Set wksData1 = wb.Worksheets("Daten")
Set wksData3 = wb.Worksheets("Level 1")
Set wksProto = wb.Worksheets("Protokoll")

If IsNumeric(wksData3.Cells(1, 5)) Then
  dblWhen = CDate(wksData3.Cells(1, 5))
Else
  dblWhen = TimeSerial(0, 1, 0)
End If

With wksProto
  ZeileP = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
  .Cells(ZeileP, 1).Value = wksData1.Range("A1").Value
  .Cells(ZeileP, 2).Value = wksData3.Range("A1").Value
  .Cells(ZeileP, 3).Value = wksData3.Range("A2").Value
  .Cells(ZeileP, 4).Value = wksData3.Range("A3").Value
  .Cells(ZeileP, 5).Value = wksData3.Range("A4").Value
  .Cells(ZeileP, 6).Value = wksData1.Range("A2").Value
End With

datTime = Now + CDate(dblWhen)
Application.OnTime Earliesttime:=datTime, Procedure:=strOntimeProcedure
End Sub

Gruß Sepp

Anzeige
AW: variable Konstante in VBA?
14.08.2017 16:24:26
ChrisL
Hi Thilo
Public strTimeDiff As String
Sub StartTimer()
strTimeDiff = Worksheets("Level 1").Range("E1")
Call subAktion
End Sub

cu
Chris
AW: variable Konstante in VBA?
14.08.2017 17:14:26
Thilo
Vielen Dank schon mal an alle!
Ich habe jetzt die Lösung von Chris ausprobiert.
Im Prinzip tut sie schon, was sie soll, aber: wenn ich das Sekundenintervall, während das Protokoll läuft, manuell verändere (und genau das soll im Echtbetrieb ja automatisch passieren), läuft das Protokoll mit dem alten Intervall weiter. Erst wenn ich das Protokoll stoppe und dann neu starte, übernimmt VBA das neue Intervall. Siehe Anhang, ich hatte von 3 auf 20 Sekunden geändert:
https://www.herber.de/bbs/user/115453.xls
Gibt es eine Lösung, dass sich Änderungen in Zelle Level 1!E1 unmittelbar auswirken?
Thilo
Anzeige
meine Lösung probiert? o.T.
14.08.2017 17:17:32
Sepp
Gruß Sepp

AW: meine Lösung probiert? o.T.
14.08.2017 17:47:54
Thilo
Hallo Sepp,
in der Datei

Die Datei https://www.herber.de/bbs/user/115454.xls wurde aus Datenschutzgründen gelöscht


habe ich ein 10 Sekunden-Intervall hinterlegt, aber er scheint nur einen Satz pro Minute (Worksheet Protokoll) zu generieren. Oder stimmt was mit dem Format in Level 1!E1 nicht?
Thilo
AW: meine Lösung probiert? o.T.
14.08.2017 18:23:02
Sepp
Hallo Thilo,
klar, in E1 steht jetzt auch plötzlich ein Text und keine Uhrzeit!
Ich habe den Code umgestellt, die Zeit wird jetzt direkt aus den Eingabe-Zellen ermittelt.
Außerdem habe ich die Eingabezellen mit einer Gültigkeitsprüfung gegen Falscheingabe gesichert.
https://www.herber.de/bbs/user/115456.xls
Gruß Sepp

Anzeige
AW: meine Lösung probiert? o.T.
14.08.2017 18:29:11
Thilo
Klasse Sepp, jetzt passt's genau!
Vielen Dank,
Thilo
AW: variable Konstante in VBA?
14.08.2017 17:41:31
ChrisL
Hi Thilo
Nimm den Code von Sepp. Der schlaue Fuchs hat den Intervall innerhalb von SubAktion platziert.
cu
Chris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge