Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
784to788
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
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bei Fehleingabe Tabellenwechsel

Bei Fehleingabe Tabellenwechsel
28.07.2006 21:32:50
Ina
Hallo Forum,
ich katalogisiere meine Digitalfotos sortiert nach Monat in den Tabellen Januar, Februar, März... Dezember nach Datum der Aufnahme.
Leider kommt es immer wieder vor, das ich viele Fotos im Monat Januar eingebe und dann z.B. weitere Fotos für den Monat März eingebe, dabei aber vergesse, in die Tabelle März zu wechseln.
Gibt es in VBA eine Möglichkeit, abhängig von der Eingabe automatisch in die entsprechende Tabelle zu wechseln? Das Datum wird dabei in den Bereich C8 - C151 geschrieben.
Beispiel:
Eingabe 01.01.2006 in die Tabelle Januar - ok
Eingabe 20.03.2006 in die Tabelle Januar - Automatischer Wechsel in die Tabelle März zur nächsten freien Zelle im Bereich C8 - C151
Wer kann mir, möglichst mit einem Code-Beispiel, weiterhelfen?
Danke im Voraus!
Gruss, Ina

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bei Fehleingabe Tabellenwechsel
28.07.2006 21:53:47
Josef
Hallo Ina!
Kopiere diesen Code in das Modul "DieseArbeitsmappe".
(Rechtsklick auf das Excelsymbol ganz links oben neben "Datei" &gt Code anzeigen und in das rechte Fenster einfügen)
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Const cFormat As String = "mmmm" 'Wenn die Tabellen "Januar, Februar, März, ... heisen
' "mmm" 'Wenn die Tabellen "Jan, Feb, Mrz, ... heisen

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim dDate As Date
Dim lngNext As Long
On Error GoTo ErrExit
Application.EnableEvents = False
If IsDate(DateValue("2007/" & Sh.Name & "/1")) Then
  If Target.Count = 1 And Target <> "" Then
    If IsDate(Target) Then
      If Month(Target) <> Month(DateValue("2007/" & Sh.Name & "/1")) Then
        dDate = Target
        Target.ClearContents
        With Sheets(Format(dDate, cFormat))
          lngNext = .Range("C151").End(xlUp).Row + 1
          If lngNext < 8 Then lngNext = 8
          .Cells(lngNext, 3) = dDate
          .Activate
          .Cells(lngNext, 3).Select
        End With
      End If
    End If
  End If
End If
ErrExit:
Application.EnableEvents = True
End Sub


Gruß Sepp

Anzeige
AW: Bei Fehleingabe Tabellenwechsel
28.07.2006 22:20:23
Ina
Hallo Sepp,
das funktioniert 2006 bestens.
Ist es möglich, den Code dahingehend zu ändern, dass das Jahr aus einer Zelle (Tabelle Januar, Zelle B3)ausgelesen wird und wenn das eigegebene Datum (Jahr) mit dem Jahr aus Januar, B3 übereinstimmt, der Code ausgeführt wird, ansonsten aber eine Fehlermeldung (MessageBox, falsches Jahr o. ä.) erscheint und die Eingabe in der aktuellen Zelle gelöscht bzw. die Angabe unterlegt wird?
Noch einmal Danke vorab!
Gruss, Ina
AW: Bei Fehleingabe Tabellenwechsel
28.07.2006 22:28:06
Josef
Hallo Ina!
Nimm diesen Code.
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim dDate As Date
Dim iYear As Integer
On Error GoTo ErrExit
Application.EnableEvents = False
iYear = Sheets("Januar").Range("B3").Value
If IsDate(DateValue("2007/" & Sh.Name & "/1")) Then
  If Target.Count = 1 And Target <> "" Then
    If IsDate(Target) Then
      If Month(Target) <> Month(DateValue("2007/" & Sh.Name & "/1")) Then
        dDate = Target
        If Year(dDate) = iYear Then
          Target.ClearContents
          moveDate dDate
        Else
          MsgBox "Wohl im falschen Jahr gelandet!", 48, "Falsche Jahr"
          Target.Select
        End If
      End If
    End If
  End If
End If
ErrExit:
Application.EnableEvents = True
End Sub


Private Sub moveDate(fDate As Date)
Dim lngNext As Long
Dim objSh As Worksheet

For Each objSh In Me.Worksheets
  If IsDate(DateValue("2007/" & objSh.Name & "/1")) Then
    If Month(fDate) = Month(DateValue("2007/" & objSh.Name & "/1")) Then
      With objSh
        lngNext = .Range("C151").End(xlUp).Row + 1
        If lngNext < 8 Then lngNext = 8
        .Cells(lngNext, 3) = fDate
        .Activate
        .Cells(lngNext, 3).Select
      End With
      Exit For
    End If
  End If
Next

End Sub


Jetzt ist es auch egal, ob die Tabellen "Jan", "Feb", "Mrz", ..., oder "Januar, "Februar", "März", ... heisen.
Gruß Sepp

Anzeige
AW: Vielen Dank, Sepp!
28.07.2006 22:44:54
Ina
Hallo Sepp!
Vielen Dank für Deine Hilfe, das klappt wunderbar!
Grüsse, Ina

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige