Hilfe bei Excel Macro

  • #1
T

tm

Bekanntes Mitglied
Themenersteller
Dabei seit
06.03.2001
Beiträge
118
Reaktionspunkte
0
Ort
Bayern
wer könnte mir bitte helfen ?

ich bräuchte für excel ein macro, dass mir aus einer tabelle alle zeilen löscht die in der spalte e nicht einen bestimmten wert haben.

da ich mich damit leider nicht auskenne, bräuchte ich eure hilfe.
das einzige was ich zusammengebracht habe, wäre das hier, also die zeile manuell markieren und dann zelle löschen:
Sub Makro1()
'

Rows(5:5).Select
Selection.Delete Shift:=xlUp
End Sub
 
  • #2
Als was sind die Zellen formatiert? Ein Beispiel-Wert wäre hifsreich.

Gruß Matjes :)
 
  • #3
als Standard;
Wert bzw. Inhalt der Spalte, z. B.: abc: 123456
 
  • #4
Code:
Sub Excel_ZeileLoeschenWennNichtInSpalteEWert()
 ->ich bräuchte für excel ein macro, dass mir aus einer tabelle
 ->alle zeilen löscht die in der spalte e nicht einen
 ->bestimmten wert haben.

  Const c_Wert = abc: 123456
  Const c_SP_E = 5
  Const c_ZUEBERCHRIFT = 1->Zeile Überschrift
  
  Dim lLetzteZeile As Long, lZeile As Long

  lLetzteZeile = ActiveSheet.UsedRange.Row + _
                 ActiveSheet.UsedRange.Rows.Count - 1
  For lZeile = lLetzteZeile To c_ZUEBERCHRIFT + 1 Step -1
    If c_Wert <> ActiveSheet.Cells(lZeile, c_SP_E).Value Then
      ActiveSheet.Rows(lZeile).Delete
    End If
  Next
End Sub
Gruß Matjes :)
 
  • #5
vielen vielen Dank !!

noch eine frage zu
Const c_ZUEBERCHRIFT = 1->Zeile Überschrift

ist damit die Überschrift bzw. Kopfzeile der Spalte E gemeint ?

ich hatte eigentlich noch vergessen, das natürlich die Zeile 1 (wo die ganzen Überschriften) stehen
nicht gelöscht werden soll.
oder hast du das damit schon berücksichtigt ?
 
  • #6
hi matjes,

hat sich erledigt !

hab gerade alles getestet !!

läuft 1a !!


du bist der beste !!!!
;)
 
  • #7
Hi Matjes,

jetzt hätte ich doch noch einmal eine Frage:
wäre auch noch folg. möglich:

die Spalte B bzw. Zelle hat folg. Formatierung:
[$-407]TTTT, T. MMMM JJJJ hh:mm
Wertmäßig dargestellt wird die Zelle, z. B., wie folgt:
09.06.2006 13:37:00
in der Spalte schaut es, aufgrund o. g. Formatierung, dann z. B. so aus: Freitag, 9. Juni 2006 13:37

(Datum und Uhrzeit sind hier zusammen, da das ganze so aus einem Programm erstellt wird, und ich darauf zunächst keinen Einfluss habe).


könnte man noch ein zusätzliches Macro erstellen,
in dem alle Zeilen gelöscht werden bei denen die Spalte B nicht in der Zeit von:
Werktags 9.00 - 18.00 Uhr (genau 09.00 Uhr und 1 Sekunde - 18.00 Uhr)
liegt.

und ein weiteres,
in dem alle Zeilen gelöscht werden bei denen die Spalte B nicht in der Zeit von:
Werktags 18.00 - 9.00 Uhr (genau 18.00 Uhr und 1 Sekunde - 09.00 Uhr), sowie am Wochenende 0.00 - 24.00 Uhr
(genau Freitag 0.00 Uhr und 1 Sekunde - Sonntag 24.00 Uhr;
wobei man hier vermutlich auch sagen könnte, von Freitag 18.00 Uhr und 1 Sekunde bis Montag 09.00 Uhr,
da dies ja sowieso mit in den Bereich 18.00 - 09.00 fallen würde)
liegt.


Ich denke mal, das es zwar gehen wird, aber sehr kompliziert wäre.
Ich möchte nicht unverschämt sein ! Aber könntest Du mir das erstellen ?
Wenn es aber nicht möglich ist, egal aus welchen Gründen, kein Problem, sag mir einfach Bescheid.
 
  • #8
Hallo tm,

hier die beiden Makros. Die Beschreibung  des zweiten war mir zu kompliziert und nicht schlüssig. Bei dem Format erhält man immer 0 Sekunden ! (wahrscheinlich meintest Du + 1 Minute)

Also der erste Makro löscht alles was nicht Werktags von [9.00 -18.00] liegt. Das zweite Makro macht genau das Gegenteil.

Gruß Matjes :)
Code:
'********************************************************************
Sub Excel_ZeileLoeschenWennDatumZeitInSpalteBNichtWerktags9bis18Uhr()

  Const c_SP_B = 2
  Const c_ZUEBERCHRIFT = 1->Zeile Überschrift
  Dim lLetzteZeile As Long, lZeile As Long, dDateTime As Date
  
  lLetzteZeile = ActiveSheet.UsedRange.Row + _
                 ActiveSheet.UsedRange.Rows.Count - 1
  For lZeile = lLetzteZeile To c_ZUEBERCHRIFT + 1 Step -1
   ->Zeilen ohne Datum überspringen
    If IsDate(ActiveSheet.Cells(lZeile, c_SP_B).Value) Then
      dDateTime = ActiveSheet.Cells(lZeile, c_SP_B).Value
      If Not WerktagsVon09Bis1800(dDateTime) Then
        ActiveSheet.Rows(lZeile).Delete
      End If
    End If
  Next
End Sub
'********************************************************************
Sub Excel_ZeileLoeschenWennDatumZeitInSpalteBWerktags9bis18Uhr()

  Const c_SP_B = 2
  Const c_ZUEBERCHRIFT = 1->Zeile Überschrift
  Dim lLetzteZeile As Long, lZeile As Long, dDateTime As Date
  
  lLetzteZeile = ActiveSheet.UsedRange.Row + _
                 ActiveSheet.UsedRange.Rows.Count - 1
  For lZeile = lLetzteZeile To c_ZUEBERCHRIFT + 1 Step -1
   ->Zeilen ohne Datum überspringen
    If IsDate(ActiveSheet.Cells(lZeile, c_SP_B).Value) Then
      dDateTime = ActiveSheet.Cells(lZeile, c_SP_B).Value
      If WerktagsVon09Bis1800(dDateTime) Then
        ActiveSheet.Rows(lZeile).Delete
      End If
    End If
  Next
End Sub
'********************************************************************
Private Function WerktagsVon09Bis1800(dDateTime As Date) As Boolean
'***   True, wenn Datum/Zeit Werktags(Mo-Fr) 9:00 bis 18:00 ist
  
  Dim iWochentag As Integer
  Dim iStd As Integer, iMin As Integer, iSec As Integer
  
  iWochentag = WeekDay(dDateTime)
  iStd = Hour(dDateTime)
  iMin = Minute(dDateTime)
  iSec = Second(dDateTime)
  
 ->Werktags9bis18Uhr ?
  If (iWochentag = vbSaturday) Or (iWochentag = vbSunday) Then
    WerktagsVon09Bis1800 = False
  ElseIf iStd >= 9 And iStd <= 17 Then
    WerktagsVon09Bis1800 = True
  ElseIf iStd = 18 And iMin = 0 And iSec = 0 Then
    WerktagsVon09Bis1800 = True
  Else
    WerktagsVon09Bis1800 = False
  End If

End Function
 
  • #9
hi matjes,

zuerst einmal vielen vielen dank für deine mühe(n) !!!!!

wie ich gesehen habe, hast du nochmal etwas geändert.
allerdings ist mir ehrlich gesagt nicht ganz klar, wie das mit der Private Function funktioniert !?
ich hatte mir gestern aber zuvor dein altes script auch schon kopiert.

das gestrige hat auch funktioniert.
bis auf die tatsache, das werktags und nichtwerktags, glaube ich vertauscht waren,
d. h. wenn ich ..werktags aufgerufen habe, dann habe ich die anderen ergebnisse bekommen
und umgekehrt. ich habs dann einfach von der bezeichnung her geändert.
kann aber auch sein, das ich mich beim kopieren vertan habe,
oder eher etwas nicht ganz verstanden habe !?

das neue funktionert ebenfalls 1a !

ich kenne jetzt deinen grund nicht, wieso du nochmals hand angelegt hast,
oder hast du noch einen fehler entdeckt der mir noch gar nicht aufgefallen ist ?


könnte man eigentlich auch die feiertage mit einbauen
(die müssten mit in den bereich 18.00 - 09.00 Uhr) ??
oder geht das eigentlich gar nicht, da man die nicht definieren kann !?
 
  • #10
Hallo tm,

da das Feststellen Werktags900bis1800 in beiden Makros gleich ist, hab ich sie als Function ausgelagert.
Die Funktion wird dann einfach aufgerufen und liefert True oder False zurück.
Code:
If WerktagsVon09Bis1800(dDateTime) Then
bzw.
Code:
If Not WerktagsVon09Bis1800(dDateTime) Then


Für die Feiertagsabfrage hab ich dir eine kleine Function IstFeiertag angefügt.
Im Array FeiertageDatum müßtest Du die für dich gültigen Feiertage eintragen.


IstFeiertag wird in WerktagsVon09Bis1800 aufgerufen. Ist das Datum ein Feiertag gibt WerktagsVon09Bis1800 False zurück.


Feiertage kannst du z.B. unter http://www.feiertage.net/uebersicht.php nachschauen.

Gruß Matjes :)
Code:
'********************************************************************
Sub Excel_ZeileLoeschenWennDatumZeitInSpalteBNichtWerktags9bis18Uhr()

  Const c_SP_B = 2
  Const c_ZUEBERCHRIFT = 1->Zeile Überschrift
  Dim lLetzteZeile As Long, lZeile As Long, dDateTime As Date
  
  lLetzteZeile = ActiveSheet.UsedRange.Row + _
                 ActiveSheet.UsedRange.Rows.Count - 1
  For lZeile = lLetzteZeile To c_ZUEBERCHRIFT + 1 Step -1
   ->Zeilen ohne Datum überspringen
    If IsDate(ActiveSheet.Cells(lZeile, c_SP_B).Value) Then
      dDateTime = ActiveSheet.Cells(lZeile, c_SP_B).Value
      If Not WerktagsVon09Bis1800(dDateTime) Then
        ActiveSheet.Rows(lZeile).Delete
      End If
    End If
  Next
End Sub
'********************************************************************
Sub Excel_ZeileLoeschenWennDatumZeitInSpalteBWerktags9bis18Uhr()

  Const c_SP_B = 2
  Const c_ZUEBERCHRIFT = 1->Zeile Überschrift
  Dim lLetzteZeile As Long, lZeile As Long, dDateTime As Date
  
  lLetzteZeile = ActiveSheet.UsedRange.Row + _
                 ActiveSheet.UsedRange.Rows.Count - 1
  For lZeile = lLetzteZeile To c_ZUEBERCHRIFT + 1 Step -1
   ->Zeilen ohne Datum überspringen
    If IsDate(ActiveSheet.Cells(lZeile, c_SP_B).Value) Then
      dDateTime = ActiveSheet.Cells(lZeile, c_SP_B).Value
      If WerktagsVon09Bis1800(dDateTime) Then
        ActiveSheet.Rows(lZeile).Delete
      End If
    End If
  Next
End Sub
'********************************************************************
Private Function WerktagsVon09Bis1800(dDateTime As Date) As Boolean
'***   True, wenn Datum/Zeit Werktags(Mo-Fr) 9:00 bis 18:00 ist
  
  Dim iWochentag As Integer
  Dim iStd As Integer, iMin As Integer, iSec As Integer
  
  iWochentag = WeekDay(dDateTime)
  iStd = Hour(dDateTime)
  iMin = Minute(dDateTime)
  iSec = Second(dDateTime)
  
 ->Werktags9bis18Uhr ?
  If IstFeiertag(dDateTime) Then
    WerktagsVon09Bis1800 = False
  ElseIf (iWochentag = vbSaturday) Or (iWochentag = vbSunday) Then
    WerktagsVon09Bis1800 = False
  ElseIf iStd >= 9 And iStd <= 17 Then
    WerktagsVon09Bis1800 = True
  ElseIf iStd = 18 And iMin = 0 And iSec = 0 Then
    WerktagsVon09Bis1800 = True
  Else
    WerktagsVon09Bis1800 = False
  End If

End Function
'********************************************************************
Private Function IstFeiertag(dDateTime As Date) As Boolean
'***   True, wenn Datum/Zeit Feiertag ist

  Dim FeiertageDatum As Variant
  FeiertageDatum = Array(14.4.2006, 16.4.2006, 17.4.2006, _
                         1.5.2006, 25.5.2006, 4.6.2006, _
                         5.6.2006)
  
  Dim sDatum As String, x As Long
  
  sDatum = Format(dDateTime, d.m.yyyy)
  IstFeiertag = False
  For x = LBound(FeiertageDatum) To UBound(FeiertageDatum)
    If sDatum = FeiertageDatum(x) Then IstFeiertag = True: Exit For
  Next
End Function
 
  • #11
hi matjes,

funktioniert alles super !!!

ich kann mich gar nicht oft genug bei dir bedanken !!!!


alleine hätte ich das nie und nimmer hingebracht,
aber ich denke du machst das bestimmt schon eine weile !??

glaubst du, ich kann mir sowas selbst beibringen ?
könntest du mir da etwas empfehlen (lernbuch, etc.) ?
oder hilft da zunächst nur einmal ein vernüftiger kurs ?


gruss
tm
 
  • #13
danke !
 
  • #14
hi matjes,

jetzt ist mir doch noch etwas auf- bzw. eingefallen.

es gibt noch eine spalte C. in der sind telefonnummern gespeichert.
formatierung standard.
wert der zelle, z. b.:
17052xxxxxxx (also ohne null !!)

in beiden scripten müsste es so sein,
alles wie bisher aber noch zusätzlich das zeilen nicht enthalten sein dürften,
wenn es sich um eine handy nummer handelt.
also 170, 171, etc. bzw. könnte man dadurch evtl. auch andere nummernkreise ausklammern.
könnte man das auch wieder so machen, wie bei den feiertagen,
also über funktion, wo man dann alle zutreffenden dreistelligen handy vorwahlnummern eingibt !?
 
  • #15
Dann hier die Halbzeit-Ergebnisse Mexiko-Iran  ;D

Code:
Option Explicit
'********************************************************************
Sub Excel_ZeileLoeschenWennDatumZeitInSpalteBNichtWerktags9bis18Uhr()

  Const c_SP_B = 2
  Const c_SP_C = 3
  Const c_ZUEBERCHRIFT = 1->Zeile Überschrift
  Dim lLetzteZeile As Long, lZeile As Long, dDateTime As Date, sTelNr As String
  
  lLetzteZeile = ActiveSheet.UsedRange.Row + _
                 ActiveSheet.UsedRange.Rows.Count - 1
  For lZeile = lLetzteZeile To c_ZUEBERCHRIFT + 1 Step -1
   ->Zeilen ohne Datum überspringen
    If IsDate(ActiveSheet.Cells(lZeile, c_SP_B).Value) Then
      dDateTime = ActiveSheet.Cells(lZeile, c_SP_B).Value
      If Not WerktagsVon09Bis1800(dDateTime) Then
        sTelNr = ActiveSheet.Cells(lZeile, c_SP_C).Value
        If Not TelefonNummernfilter(sTelNr) Then
          ActiveSheet.Rows(lZeile).Delete
        End If
      End If
    End If
  Next
End Sub
'********************************************************************
Sub Excel_ZeileLoeschenWennDatumZeitInSpalteBWerktags9bis18Uhr()

  Const c_SP_B = 2
  Const c_SP_C = 3
  Const c_ZUEBERCHRIFT = 1->Zeile Überschrift
  Dim lLetzteZeile As Long, lZeile As Long, dDateTime As Date, sTelNr As String
  
  lLetzteZeile = ActiveSheet.UsedRange.Row + _
                 ActiveSheet.UsedRange.Rows.Count - 1
  For lZeile = lLetzteZeile To c_ZUEBERCHRIFT + 1 Step -1
   ->Zeilen ohne Datum überspringen
    If IsDate(ActiveSheet.Cells(lZeile, c_SP_B).Value) Then
      dDateTime = ActiveSheet.Cells(lZeile, c_SP_B).Value
      If WerktagsVon09Bis1800(dDateTime) Then
        sTelNr = ActiveSheet.Cells(lZeile, c_SP_C).Value
        If Not TelefonNummernfilter(sTelNr) Then
          ActiveSheet.Rows(lZeile).Delete
         End If
      End If
    End If
  Next
End Sub
'********************************************************************
Private Function WerktagsVon09Bis1800(dDateTime As Date) As Boolean
'***   True, wenn Datum/Zeit Werktags(Mo-Fr) 9:00 bis 18:00 ist
  
  Dim iWochentag As Integer
  Dim iStd As Integer, iMin As Integer, iSec As Integer
  
  iWochentag = WeekDay(dDateTime)
  iStd = Hour(dDateTime)
  iMin = Minute(dDateTime)
  iSec = Second(dDateTime)
  
 ->Werktags9bis18Uhr ?
  If IstFeiertag(dDateTime) Then
    WerktagsVon09Bis1800 = False
  ElseIf (iWochentag = vbSaturday) Or (iWochentag = vbSunday) Then
    WerktagsVon09Bis1800 = False
  ElseIf iStd >= 9 And iStd <= 17 Then
    WerktagsVon09Bis1800 = True
  ElseIf iStd = 18 And iMin = 0 And iSec = 0 Then
    WerktagsVon09Bis1800 = True
  Else
    WerktagsVon09Bis1800 = False
  End If

End Function
'********************************************************************
Private Function IstFeiertag(dDateTime As Date) As Boolean
'***   True, wenn Datum/Zeit Feiertag ist

  Dim FeiertageDatum As Variant
  FeiertageDatum = Array(14.4.2006, 16.4.2006, 17.4.2006, _
                         1.5.2006, 25.5.2006, 4.6.2006, _
                         5.6.2006)
  
  Dim sDatum As String, x As Long
  
  sDatum = Format(dDateTime, d.m.yyyy)
  IstFeiertag = False
  For x = LBound(FeiertageDatum) To UBound(FeiertageDatum)
    If sDatum = FeiertageDatum(x) Then IstFeiertag = True: Exit For
  Next
End Function
Private Function TelefonNummernfilter(sTelNr As String) As Boolean
'***   True, wenn sTelNr mit einem TelNrFilter anfängt

  Dim TelNrFilter As Variant, x As Long
  TelNrFilter = Array(170, 171)

  TelefonNummernfilter = False
  If sTelNr =  Then Exit Function
  For x = LBound(TelNrFilter) To UBound(TelNrFilter)
    If TelNrFilter(x) = Left(sTelNr, Len(TelNrFilter(x))) Then
      TelefonNummernfilter = True: Exit For
    End If
  Next

End Function
 
  • #16
hi matjes,

danke !!!
ich wünschte, ich könnte mal so, in der halbzeitpause, so etwas erstellen ! ;D ;)

ich hab ein kleines problem mit dem telefonnummernfilter,
da die übergabe in die datei, wie schon erwähnt, derzeit ohne die 0 erfolgt.
z. b. ist die 160 sowohl der anfang einer handynummer,
als auch, zumindest bei uns, könnten es die ersten drei ziffern von möglichen ortsnetznummern bei uns bzw.
im nachbarort sein.

nun meine frage:
sehe ich das richtig, das die abfrage der länge über LEN(TelNrFilter(X))
sich variabel ergibt, und somit die eingaben in Array die länge variabel bestimmen können ??
d. h. man könnte im Array unterschiedliche längen der rufnummernbereiche angeben ??

das gleiche problem auch bei auslandsrufnummern.
z. b. österreich 0043.
da keine 00 mitgegeben wird, steht da 43..
wenn man jetzt im filter 43 eingibt, vorausgesetzt unterschiedliche stellen (siehe oben) würde gehen,
dann könnte es ja sein, das es inlandsrufnummern gibt die ebenfalls mit 43.. (also 043..) losgehen.
das habe ich jetzt noch nicht überprüft, aber so könnte das bei bestimmten filtern immer sein.
 
  • #17
  • #18
hi matjes,

es scheint ein fehler drin zu sein.
es werden jetzt in beide scripte bzw. auswertungen,
alle zeile hinzugefügt die dem telefonfilter entsprechen
und nicht weggelassen !
z. B. stehen in der ursprungsbeispielliste in zweiten script bzw. in der zweiten auswertung 2 einträge mit
handynummern drin. diese stehen dann damit auch nun im 1. script bzw. in der ersten auswertung mit drin !


ich habe dann versucht, in beiden scripten die anweisung
If Not TelefonNummernfilter (sTelNr) Then
zu ändern, d. h. das Not zu entfernen;
aber dann berücksichtigt er die Sache mit dem Datum (Werktag und Feiertag) nicht mehr !?
 
  • #19
Hallo tm,

ich hatte das so verstanden, daß die Handynummern, egal ob Makro1 oder 2, nicht gelöscht werden sollten.

Ja, lesen müßte man können  ;D
in beiden scripten müsste es so sein,
alles wie bisher aber noch zusätzlich das zeilen nicht enthalten sein dürften,
wenn es sich um eine handy nummer handelt.

Jetzt wird die Zeile bei Makro1 und 2 gelöscht, wenn der telefonNummernFilter True zurückgibt.

Gruß Matjes :)
Code:
'********************************************************************
Sub Excel_ZeileLoeschenWennDatumZeitInSpalteBNichtWerktags9bis18Uhr()

  Const c_SP_B = 2
  Const c_SP_C = 3
  Const c_ZUEBERCHRIFT = 1->Zeile Überschrift
  Dim lLetzteZeile As Long, lZeile As Long, dDateTime As Date, sTelNr As String
  
  lLetzteZeile = ActiveSheet.UsedRange.Row + _
                 ActiveSheet.UsedRange.Rows.Count - 1
  For lZeile = lLetzteZeile To c_ZUEBERCHRIFT + 1 Step -1
    sTelNr = ActiveSheet.Cells(lZeile, c_SP_C).Value
    If TelefonNummernfilter(sTelNr) Then
     ->gefilterte Telnummern auf jeden Fall löschen
      ActiveSheet.Rows(lZeile).Delete
    Else
     ->Zeilen ohne Datum überspringen
      If IsDate(ActiveSheet.Cells(lZeile, c_SP_B).Value) Then
        dDateTime = ActiveSheet.Cells(lZeile, c_SP_B).Value
        If Not WerktagsVon09Bis1800(dDateTime) Then
          ActiveSheet.Rows(lZeile).Delete
        End If
      End If
    End If
  Next
End Sub
'********************************************************************
Sub Excel_ZeileLoeschenWennDatumZeitInSpalteBWerktags9bis18Uhr()

  Const c_SP_B = 2
  Const c_SP_C = 3
  Const c_ZUEBERCHRIFT = 1->Zeile Überschrift
  Dim lLetzteZeile As Long, lZeile As Long, dDateTime As Date, sTelNr As String
  
  lLetzteZeile = ActiveSheet.UsedRange.Row + _
                 ActiveSheet.UsedRange.Rows.Count - 1
  For lZeile = lLetzteZeile To c_ZUEBERCHRIFT + 1 Step -1
    sTelNr = ActiveSheet.Cells(lZeile, c_SP_C).Value
    If TelefonNummernfilter(sTelNr) Then
     ->gefilterte Telnummern auf jeden Fall löschen
      ActiveSheet.Rows(lZeile).Delete
     Else
     ->Zeilen ohne Datum überspringen
      If IsDate(ActiveSheet.Cells(lZeile, c_SP_B).Value) Then
        dDateTime = ActiveSheet.Cells(lZeile, c_SP_B).Value
        If WerktagsVon09Bis1800(dDateTime) Then
          ActiveSheet.Rows(lZeile).Delete
        End If
      End If
    End If
  Next
End Sub
'********************************************************************
Private Function WerktagsVon09Bis1800(dDateTime As Date) As Boolean
'***   True, wenn Datum/Zeit Werktags(Mo-Fr) 9:00 bis 18:00 ist
  
  Dim iWochentag As Integer
  Dim iStd As Integer, iMin As Integer, iSec As Integer
  
  iWochentag = WeekDay(dDateTime)
  iStd = Hour(dDateTime)
  iMin = Minute(dDateTime)
  iSec = Second(dDateTime)
  
 ->Werktags9bis18Uhr ?
  If IstFeiertag(dDateTime) Then
    WerktagsVon09Bis1800 = False
  ElseIf (iWochentag = vbSaturday) Or (iWochentag = vbSunday) Then
    WerktagsVon09Bis1800 = False
  ElseIf iStd >= 9 And iStd <= 17 Then
    WerktagsVon09Bis1800 = True
  ElseIf iStd = 18 And iMin = 0 And iSec = 0 Then
    WerktagsVon09Bis1800 = True
  Else
    WerktagsVon09Bis1800 = False
  End If

End Function
'********************************************************************
Private Function IstFeiertag(dDateTime As Date) As Boolean
'***   True, wenn Datum/Zeit Feiertag ist

  Dim FeiertageDatum As Variant
  FeiertageDatum = Array(14.4.2006, 16.4.2006, 17.4.2006, _
                         1.5.2006, 25.5.2006, 4.6.2006, _
                         5.6.2006)
  
  Dim sDatum As String, x As Long
  
  sDatum = Format(dDateTime, d.m.yyyy)
  IstFeiertag = False
  For x = LBound(FeiertageDatum) To UBound(FeiertageDatum)
    If sDatum = FeiertageDatum(x) Then IstFeiertag = True: Exit For
  Next
End Function
Private Function TelefonNummernfilter(sTelNr As String) As Boolean
'***   True, wenn sTelNr mit einem TelNrFilter anfängt

  Dim TelNrFilter As Variant, x As Long
  TelNrFilter = Array(170, 171)

  TelefonNummernfilter = False
  If sTelNr =  Then Exit Function
  For x = LBound(TelNrFilter) To UBound(TelNrFilter)
    If TelNrFilter(x) = Left(sTelNr, Len(TelNrFilter(x))) Then
      TelefonNummernfilter = True: Exit For
    End If
  Next

End Function
 
  • #20
Hallo Matjes,

läuft super !!!

Danke, nochmals !!!!!


Gruss
tm
 
Thema:

Hilfe bei Excel Macro

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben