Excel-Fragen Volume 4!
Geizhals » Forum » Programmierung » Excel-Fragen Volume 4! (21 Beiträge, 131 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.
Re: Excel-Fragen Volume 4!
16.01.2005, 22:31:34
So, mehr aufwand als gedacht ;-)

Option Explicit
'hier die Anzahl der Sheets eingeben (0 der größer als Anzahl der Sheets=alle)
'es wird ab dem ersten gezählt nach links, überspringen ist nicht möglich
Const INTSHEETS = 12
'true eintragen wenn ein Hinweis erscheinen soll, dass keine Zelle mit Datum vorhanden ist
'false wenn einfach weitergemacht werden soll (kein Hinweis)
Const BOLFEHLER = True
Private Sub Workbook_Open()
Dim intCounter As Integer, intTmp As Integer, intSheetCount As Integer
Dim wks As Worksheet
Set wks = ActiveSheet
Application.ScreenUpdating = False
intSheetCount = INTSHEETS
On Error GoTo fehler:
If INTSHEETS > ActiveWorkbook.Worksheets.Count Or INTSHEETS = 0 Then intSheetCount = ActiveWorkbook.Worksheets.Count
For intCounter = 1 To intSheetCount
    intTmp = findCell(ActiveWorkbook.Worksheets(intCounter))
    If intTmp = 0 And BOLFEHLER = True Then
        MsgBox ("Tabelle: " & ActiveWorkbook.Worksheets(intCounter).Name & " enthält keine Zelle mit dem aktuellen Datum, Tabellenblatt übersprungen!")
    End If
Next intCounter
wks.Activate
Exit Sub
Application.ScreenUpdating = True
fehler:
MsgBox Err.Description
Application.ScreenUpdating = True
End Sub
Private Function findCell(wks As Worksheet)
Dim rng As Excel.Range
On Error GoTo Ende:
wks.Activate
If Not wks.Cells.SpecialCells(xlCellTypeFormulas, xlNumbers) Is Nothing Then
    For Each rng In wks.Cells.SpecialCells(xlCellTypeFormulas, xlNumbers)
        If rng.Value = Date Then
            rng.Select
            findCell = 2
            Exit Function
        End If
    Next
ElseIf Not wks.Cells.SpecialCells(xlCellTypeConstants, xlNumbers) Is Nothing Then
    If rng Is Nothing Then
        For Each rng In wks.Cells.SpecialCells(xlCellTypeConstants, xlNumbers)
            If rng.Value = Date Then
                rng.Select
                findCell = 2
                Exit Function
            End If
        Next
    End If
End If
Ende:
findCell = 0

End Function


Das Programm musst du im VBA-Editor (Alt+F11), Doppelklick auf die Arbeitsmappe die du willst, Doppelklick auf Arbeitsmappen-Objekte, Doppelklick auf dieseArbeitsmappe einfügen.

Du kannst sowohl die Anzahl der Sheets einstellen (beginnt beim ersten von links zu zählen, zählt Charts etc. nicht dazu), wenn du 0 wählst werden alle durchsucht.
Du kannst weiters auswählen, ob du einen Hinweis möchtest, wenn kein Datumsfeld mit aktuellem Datum drinnen ist oder nicht.


Viel spass

mfg

Penguin
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
..
Update --> v. 0.95 :-)
16.01.2005, 22:44:13
Option Explicit
'hier die Anzahl der Sheets eingeben (0 der größer als Anzahl der Sheets=alle)
'es wird ab dem ersten gezählt nach links, überspringen ist nicht möglich
Const INTSHEETS = 12
'true eintragen wenn ein Hinweis erscheinen soll, dass keine Zelle mit Datum vorhanden ist
'false wenn einfach weitergemacht werden soll (kein Hinweis)
Const BOLFEHLER = True
Private Sub Workbook_Open()
Dim intCounter As Integer, intTmp As Integer, intSheetCount As Integer
Dim wks As Worksheet
Set wks = ActiveSheet
Application.ScreenUpdating = False
intSheetCount = INTSHEETS
On Error GoTo fehler:
If INTSHEETS > ActiveWorkbook.Worksheets.Count Or INTSHEETS = 0 Then intSheetCount = ActiveWorkbook.Worksheets.Count
For intCounter = 1 To intSheetCount
    intTmp = findCell(ActiveWorkbook.Worksheets(intCounter))
    If intTmp = 0 And BOLFEHLER = True Then
        MsgBox ("Tabelle: " & ActiveWorkbook.Worksheets(intCounter).Name & " enthält keine Zelle mit dem aktuellen Datum, Tabellenblatt übersprungen!")
    End If
Next intCounter
wks.Activate
Exit Sub
Application.ScreenUpdating = True
fehler:
MsgBox Err.Description
Application.ScreenUpdating = True
End Sub
Private Function findCell(wks As Worksheet)
Dim rng As Excel.Range, rngSearch As Excel.Range
On Error Resume Next
If wks.Cells.SpecialCells(xlCellTypeFormulas, xlNumbers) Is Nothing Then
    If wks.Cells.SpecialCells(xlCellTypeConstants, xlNumbers) Is Nothing Then
        findCell = 0
        Exit Function
    Else
        Set rngSearch = wks.Cells.SpecialCells(xlCellTypeConstants, xlNumbers)
    End If
Else
    Set rngSearch = wks.Cells.SpecialCells(xlCellTypeFormulas, xlNumbers)
End If
wks.Activate
On Error GoTo Ende:
For Each rng In rngSearch
    If rng.Value = Date Then
        rng.Select
        findCell = 2
        Exit Function
    End If
Next
Ende:
findCell = 0

End Function


mfg

Penguin
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung