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

=C3-(F$1-GANZZAHL(F$1)) in Makro umbauen

=C3-(F$1-GANZZAHL(F$1)) in Makro umbauen
19.07.2008 13:06:00
Stamereilers
Hallo Ecxel Experten!
Dank eurer Hilfe habe ich ein schönes Makro hin bekommen.
Nun hätte ich noch gerne folgende Formel in das Makro eingebaut:
=C3-(F$1-GANZZAHL(F$1))
Die Formel steht in F3:F1000
Auch wenn sich die Startzeit in F1 noch ändert müßten sich die Nettozeiten in F3:F1000 auch ändern.
Formatierung F1 ist Uhrzeit
Faortmierung C3:C1000 und F3:F1000 ist hh:mm:ss,000
Das Makro:
Option Explicit
Dim DateiPos As Long
Dim zeile As Integer
Dim datei As String
Dim z As Double
Dim strFile As String
Dim lngPos As Long, lngR As Long
Dim Startzeit As Date
Sub AusTextDatei()
strFile = Application.GetOpenFilename("TagRegEx.dat,*.dat")
lngR = 3
With ActiveSheet
.Cells(1, 1) = 1
.Range(.Cells(3, 3), .Cells(.Rows.Count, 3)).NumberFormat = "hh:mm:ss.000"
.Range(.Cells(3, 4), .Cells(.Rows.Count, 4)).NumberFormat = "@"
End With
Call LeseAbPos
End Sub


Sub LeseAbPos()
Dim intFile As Integer
Dim strLine As String, varLine
intFile = FreeFile
With ActiveSheet
If .Cells(1, 1) 1 Then Exit Sub
Open strFile For Input As #intFile
Seek #intFile, lngPos + 1
Do Until lngPos >= LOF(intFile)
Line Input #intFile, strLine
varLine = Split(strLine, ";")
.Cells(lngR, 4) = Trim(varLine(1))
varLine = Split(varLine(0))
.Cells(lngR, 1) = lngR - 2
.Cells(lngR, 2) = CDate(varLine(0))
.Cells(lngR, 3) = varLine(1)
lngPos = lngPos + Len(strLine) + 2
lngR = lngR + 1
Loop
Close #intFile
Application.OnTime Now + TimeValue("00:00:01"), "LeseAbPos"
End With
End Sub



Public Sub StopEinlesen18072008()
ActiveSheet.Cells(1, 1) = 0
End Sub


Sub start18072008()
With Worksheets("rfid")
Startzeit = Now
.Range("F1").Value = Startzeit
End With
End Sub


Könnt ihr mir noch mal helfen?
Vielen Dank für eure Hilfe!
Gruß
Rolf

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Einfach die folgende Zeile in das Makro einbauen!
19.07.2008 19:40:00
Backowe
Hi Rolf,
VBA-Code:
Sub formel()
[F3:F1000].Formula = "=" & [C3].Address(0, 0) & "-(" & [F1].Address(1, 0) & _
  "-int(" & [F1].Address(1, 0) & "))"
End Sub
Gruss Jürgen

Anzeige
AW: Formel mit VBA schreiben
20.07.2008 07:44:46
Erich
Hallo Jürgen,
warum so kompliziert? Eine von diesen drei Zeilen

Sub Makro1()
Range("F3:F1000").Formula = "=C3-(F$1-INT(F$1))"
Range("F3:F1000").Formula = "=C3-F$1+INT(F$1)"
Range("F3:F1000").FormulaLocal = "=C3-F$1+GANZZAHL(F$1)"
End Sub

reicht doch.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Warum einfach, wenn es auch umständlich geht! :)
20.07.2008 11:58:31
Backowe

AW: Warum einfach, wenn es auch umständlich geht! :)
20.07.2008 12:09:03
Stamereilers
Hallo Erich!
Danke für deine Hilfe!
Alle drei Möglichkeiten funktionieren!
Es entsteht die Ganzzahl Formel im Tabellenblatt!
Ich hätte das ganze aber gerne als Makro ohne eine Formel im Tabellenblatt.
Gruß
Rolf

Anzeige
AW: Formel mit VBA schreiben
20.07.2008 12:11:00
Stamereilers
Hallo Jürgen!
Vielen Dank für deine Hilfe!
Auch diese Formel funktioniert!
Ich hätte aber gerne ein Makro und das Tabelleblatt ohne Formeln!
Gruß
Rolf

Dann so!
20.07.2008 12:46:00
Backowe
Hi,
VBA-Code:
With [F3:F1000]
  .Formula = "=C3-(F$1-INT(F$1))"
  .Copy
  .PasteSpecial Paste:=xlPasteValues
End With
Application.CutCopyMode = False
Gruss Jürgen

Anzeige
AW: Dann so - oder so?
20.07.2008 13:29:00
Erich
Hi Jürgen,
statt
.Copy
.PasteSpecial Paste:=xlPasteValues
kannst du auch den Einzeiler hinschreiben:
.Value = .Value
und dann das
Application.CutCopyMode = False
weglassen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Wenn ich mal viel Zeit habe, lerne ich VBA! :) oT
20.07.2008 13:40:00
Backowe

AW: Dann so - oder so?
20.07.2008 16:43:00
Stamereilers
Hallo Erich und Jürgen!
Leider funktioniert es nicht!
Das Makro ist im Tabellenblatt drin!
Ich hänge es mal an:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As String
If Target.Column  4 Then Exit Sub
s = Target.Address
FormelnFix (Target.Address)
' Aktualisiere
Target.Offset(1, 0).Select
If Intersect(Target, [D3:D2000]) Is Nothing Then Exit Sub
If Target.Count  1 Then Exit Sub
If IsNumeric(Target) And Target > 0 And Target 


Gruß
Rolf

Anzeige
Kann ich nicht nachvollziehen!
20.07.2008 17:03:00
Backowe
Hallo Rolf,
speichere mal die Datei, schließe und öffne Excel nochmals und teste dann wieder! ;o)
Gruss Jürgen

AW: Kann ich nicht nachvollziehen!
20.07.2008 18:46:00
Stamereilers
Hallo Jürgen!
Leider funktioniert es nicht so richtig!
Die Zeiten werden errechnet aber die letzte nicht.
Auch wird in F3:F1000 eine - Zahl reingeschrieben.
Wenn die Startzeit in F1 aktualisiert wird werden die Zeiten in F3:F1000 nicht neu aktualisiert.
Gruß
Rolf

Dann musst Du auch die Zelle F1 in ...
20.07.2008 19:04:00
Backowe
Hallo Rolf,
... Deinem, nach meiner Meinung etwas konfusen Code auch ansprechen. Allein durch die erste Anweisung -- If Target.Column 4 Then Exit Sub -- kann das mit F1 nicht funktionieren, da die Spalte F die sechste Spalte ist und die wiederum verschieden 4 ist!
Gruss Jürgen

Anzeige
AW: Kann ich nicht nachvollziehen!
20.07.2008 22:27:00
Erich
Hi Rolf,
ohne Beispielmappe wird aus deinem Code nicht so recht klar, was du erreichen willst.
Hier ein Versuch, sich dem anzunähern:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count  1 Then Exit Sub
If Intersect(Target, Union(Range("F1"), Range("D3:D2000"))) Is Nothing _
Then Exit Sub
Application.EnableEvents = False 'sonst ruft sich die Rotine immer wieder selbst auf
FormelnFix (Target.Address)     ' Was tut FormelnFix ?
' Aktualisiere
'   Target.Offset(1, 0).Select     ' Soll das so sein?
If IsNumeric(Target) And Target > 0 And Target  4 Then Exit Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Kann ich nicht nachvollziehen!
21.07.2008 18:53:00
Stamereilers
Hallo Erich!
Ich komme gerade erst von der Arbeit!
Daher kommt die Antwort erst jetzt!
Als erstes habe ich eine Datei hochgeladen.
https://www.herber.de/bbs/user/54032.xls
Formelfix arbeitet wie Sverweis aber als Makro!
Schaut ob die Transponder Id im Datebellenblatt Transponder ist und schreibt die Daten in der Zeile nach Tabellenblatt RFID zurück!
Leider muß ich mir das ganze immer zusammen fummeln da ich keine Ahnung habe!
Im Tabellenblatt Transponder gibt es 2500 Transponder ID Nummern mit Startnummer.
Danke für deine Unterstützung!
Gruß
Rolf

Anzeige
AW: Na ja...
22.07.2008 19:39:00
Erich
Hallo Rolf,
wolltest du dir nicht erst einmal die Mühe machen, den von mir geposteten Code zu testen?
Oder sollte ich das für dich erledigen?
An der Mappe wäre viel zu tun, dafür fehlt mir jetzt aber die Zeit.
Zwei Beispiele:
Warum lässt du in die Startzeit ein Datum mit Uhrzeit eintragen, um das Datum nachher in der Formel
wieder rauszurechnen (mit GANZZAHL). Wenn du Time statt Now in die Zelle schreibst,
hast du ein Problem weniger.
Ist es sinnvoll, im Change-Ereignis jedesmal knapp 1000 Formeln auszuwerten und Zellen zu belegen,
wenn sich nur eine einzige Zelle ändert?
Ich lass den Thread mal offen, vielleicht hat jemand Zeit und Lust...
Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Na ja...
22.07.2008 20:59:53
Stamereilers
Hallo Erich!
Natürlich habe ich deinen Code getestet! Ich habe auch darauf geantwortet!
Bei der Startzeit laufen alle Teilnehmer los.
Alle Teilnehmer haben eine Startnummer mit Tranponder.
Im Ziel wird die Transponder Id und die Zeit (Systemzeit ausgelesen)
Dann wird die Systemzeit von der Startzeit abgezogen = Laufzeit
Da auch mit Stoppuhren die Zeit gemessen wir kann sich die Startzeit noch geringfügig ändert.
Auch kann es passieren das man versehentlich zu früh oder zu spät startet.
Danke für deine Hilfe!
Gruß
Rolf
P.S. Es ist auch kein Problem wenn du nicht weiter hilft

Anzeige
Dann musst Du auch die Zelle F1 in ...
20.07.2008 19:02:00
Backowe
Hallo Rolf,
... Deinem, nach meiner Meinung etwas konfusen Code auch ansprechen. Allein durch die erste Anweisung -- If Target.Column 4 Then Exit Sub -- kann das mit F1 nicht funktionieren, da die Spalte F die sechste Spalte ist und die wiederum verschieden 4 ist.
Gruss Jürgen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige