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

Zeitwerte in Select Case

Zeitwerte in Select Case
Marcel
Hallo Zusammen,
ich habe ein Problem und zwar möchte ich für unsere Firma ein kleines Telefon-Auswertungs-Programm schreiben in der die Gesprächsdauer einer bestimmten Nummer ausgewertet wird.
Die Gesprächsdauer wird von jedem Anruf in einer Datenbank protokolliert.
Ich habe nun die Gesprächsdauer ausgelesen und bekomme sie im Format 00:00.
Nun möchte ich im Select Case sagen wenn die Rufdauer zwischen
1-10 sek. ist dann variable "a" + 1
11-20 sek. dann variable "b" + 1
21-30 sek. dann variable "c" + 1
...usw.
Ich möchte nämlich auswerten wie lange so ein Gespräch ungefähr dauer!
Ich bin das jetzt wie folgt angegangen:
Set ws = Worksheets("Tabelle1")
Set Bereich = ws.Range("E2:E65536")
For Each zelle In Bereich.Cells
Select Case x
Case 1 To 10
a = a + 1
Case 11 To 20
b = b + 1
Case 21 To 30
c = c + 1
Case 31 To 40
d = d + 1
Case 41 To 60
e = e + 1
Case 61 To 1, 20
f = f + 1
Case 1, 21 To 1, 40
g = g + 1
Case 1, 41 To 2, 0
h = h + 1
End Select
Next zelle
Allerdings nimmt er mir das nicht weil ich wahrscheinlich erst die Gesprächsdauer vom mm:ss Format in eine Dezimalzahl umwandeln muss. Allerdings konnte ich nirgends finden wie ich das mache vor allem wenn es sich um ca. 2000 einzelnen Werten handelt.
Wäre schön wenn mir hierbei jemand weiterhelfen könnte...

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

Betreff
Benutzer
Anzeige
AW: Zeitwerte in Select Case
04.08.2009 12:33:06
Rudi
Hallo,
x ist 0
For Each zelle In Bereich.Cells
Select Case zelle*86400
Gruß
Rudi
AW: Zeitwerte in Select Case
04.08.2009 13:13:29
Marcel
Hallo,
wie soll ich das einbauen?
Vor dem eigentlichen Select Case? Heisst das wenn ich einen Zeitwert also zb. 00:21 mit 86400 multipliziere bekomme ich die Dezimalzahl des zeitwertes? Kann ich mir irgendwie grad nicht vorstellen wie das gehen soll 00:21*86400...
Gruss Marcel
AW: Zeitwerte in Select Case
04.08.2009 13:18:40
Marcel
Ich hab hier mal zur eigentlich Verständnis des gesamten Code:
Private Sub OK_Click()
Dim sql As String
Dim conn As New ADODB.Connection
Dim rec As New ADODB.Recordset
Dim ziel As Range
Dim a1 As Range
Dim b1 As Range
Dim c1 As Range
Dim d1 As Range
Dim e1 As Range
Dim g2 As Range
Dim g3 As Range
Dim x As Integer
Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer, f As Integer, g  _
As Integer, h As   Integer
Dim ws As Worksheet
Dim Bereich As Range
Dim zelle As Range
'Bereiche definieren
Set ziel = Range("a2")
Set a1 = Range("a1")
Set b1 = Range("b1")
Set c1 = Range("c1")
Set d1 = Range("d1")
Set e1 = Range("e1")
Set g2 = Range("g2")
Set g3 = Range("g3")
'ADODB Connection
Set conn = New ADODB.Connection
'Connectionstring zu DBHO2 / Datenbank "CALLCONTROL"
conn.Open "Provider=SQLOLEDB;Data Source=dbho2.rupp.rupp.at;" & _
"Initial Catalog=CALLCONTROL;Integrated Security=SSPI"
'ADODB Recordset definieren
Set rec = New ADODB.Recordset
'SQL - String
sql = "SELECT fld_1, fld_2, fld_5, fld_7, fld_6 fld_4 FROM dbo.tblTeldatDivided WHERE fld_4  _
= '" & Me!DW & "'" & _
"AND fld_1 BETWEEN '" & Me!von & "' AND '" & Me!bis & "' AND fld_9 = '1'"
'Tabellenbeschriftung A1 bis D1 / Legende G2 + G3
a1 = "Datum"
b1 = "Uhrzeit"
c1 = "Rufdauer"
d1 = "Nummer"
e1 = "Gesprächsdauer"
'Hintergrundfarbe für Tabellenbeschriftung
Range("a1:e1").Select
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
'Hintergrundfarbe für Legende
Range("c1").Select
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
'Automatisches Anpassen der Zellenbreite an Textinhalt f. Spalten D + G
Columns("D").EntireRow.AutoFit
Columns("G").EntireColumn.AutoFit
'Recordset öffnen und SQL ausführen
rec.Open sql, conn
'Inhalt des Recordsets in den Zielbereich (variable "ziel" = Range) kopieren
ziel.CopyFromRecordset rec
'Recordset und Connection schließen
rec.Close
conn.Close
Set rec = Nothing
Set conn = Nothing
x = 0
Set ws = Worksheets("Tabelle1")
Set Bereich = ws.Range("E2:E65536")
For Each zelle In Bereich.Cells
Select Case x
Case 1 To 10
a = a + 1
Case 11 To 20
b = b + 1
Case 21 To 30
c = c + 1
Case 31 To 40
d = d + 1
Case 41 To 60
e = e + 1
Case 61 To 1, 20
f = f + 1
Case 1, 21 To 1, 40
g = g + 1
Case 1, 41 To 2, 0
h = h + 1
End Select
Next zelle
End Sub

Anzeige
AW: Zeitwerte in Select Case
04.08.2009 13:35:36
Marcel
Kann man eigentlich im Select Case keine Zeitangaben einbauen zb.
For Each zelle In Bereich.Cells
Select Case x
Case 00:01 To 00:10
a = a + 1
Case 00:11 To 00:20
b = b + 1
...usw.
AW: Zeitwerte in Select Case
04.08.2009 13:56:11
Marcel
Ja das ist mir schon klar, aber VBA kann damit trotzdem nichts anfangen oder?
Was ich weiss müssen ja Zeitwerte in Zahlen umgewandelt werden oder wie kann ich ihm sonst sagen, dass er die Variable a um 1 erhöhen soll wenn der Wert aus der Tabelle zwischen 1 und 10 sek. ist?
Anzeige
AW: Zeitwerte in Select Case
04.08.2009 13:57:05
Daniel
Hi
doch, kann man, mit den entsprechenden Umwandlungsfunktionen, die deinen Zeitstring in eine Zahl umwandeln:
For Each zelle In Bereich.Cells
Select Case Zelle.Value
Case CDate("00:01") To CDate("00:10")
allerdings hast du bei deiner Definition Lücken drin, den eine Zeit 0:10:30 würde bei dir unter Case Else fallen, da sie weder auf 1-10 noch auf 11-20 passt.
besser ist es in diesem Fall, daß so zu schreiben:
For Each zelle In Bereich.Cells
Select Case Zelle.Value
Case Is 

die Select Case-Funktion ist eindeutig konzipiert, dh. es wird maximal 1 Case-Fall ausgeführt, auch wenn mehrere von der bedingung her passen würden.
Alternativ zur CDate-funktion kannst du auch "TIMESERIAL(0, 10, 0)" verwenden.
Gruß, Daniel
Anzeige
AW: Zeitwerte in Select Case
04.08.2009 14:17:13
Marcel
super danach hatte ich gesucht!
Kann mir jemand sagen wie ich dem VBA sagen kann, dass er nur beschriebene also werthaltige Zellen zählen soll? Weil sonst zählt er mir alle Zellen inklusive der nicht beschriebenen also bis Spaltenende (65536)
Sorry aber Excel VBA ist ein wenig Neuland für mich, kenne sonst nur Access VBA und da ist es nicht so kompliziert mit den ganzen Ranges...
AW: Zeitwerte in Select Case
04.08.2009 14:45:13
Marcel
Hallo habs selber gefunden (If zelle.Value = "" Then Exit Sub)
Danke an alle!!
AW: Besser ist
04.08.2009 15:51:39
Daniel
zum Beispiel:
For Each Zelle in Range("A:A").Specialcells(xlcelltypeconstants, 1)
hier würde die Schleife nur die Zellen bearbeiten, die eine Zahl als festen Wert enthalten, leere Zellen und Texte werden ignoriert.
oder, falls die Werte nicht fest, sondern Formeln sind:
For Each Zelle in Range("A:A").Specialcells(xlcelltypeformulas, 1)
das ganze entspricht der Exelfunktion BEARBEITEN - GEHE ZU - INHALTE, falls du es mal mit dem Recorder aufzeichnen willst.
Gruß, Daniel
Anzeige
AW: Besser ist
04.08.2009 15:59:44
Marcel
super, Danke!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige