Stefan's Weblog Blog über alle möglichen Dinge rund um den Computer

6Jul/120

Anmeldung an Excel-Arbeitsmappe

Mit Hilfe von VBA kann man Abragedialoge ausführen und den Benutzer zur Eingabe bestimmter Informationen auffordern, bevor er mit der Arbeitsmappe arbeiten darf.

In dem nachfolgenden Beispiel wird die Funktionsweise erläutert.
Die Tabelle, in der alle Werte der Anmeldung gespeichert werden sollen wird im Beispiel mit Verant bezeichnet.

Code

Option Explicit


Dim strVerant_Nachname As Variant
Dim strVerant_Vorname As Variant
Public strVerant_Personal As Variant
Dim strVerant_Date As String
Dim strUnternehmen As String
Dim strGroup As String



Sub Verant_Anmeldung()

strUnternehmen = "Unternehmen"
strGroup = "Group"

'
'InputBox für den Nachname
'
   Do
        strVerant_Nachname = InputBox("Bitte Nachname eingeben.", "Nachname", "Nachname")
        If StrPtr(strVerant_Nachname) <> 0 Then
            If strVerant_Nachname <> "Nachname" Then
                        Exit Do
             Else
                MsgBox "Gib deinen Nachnamen ein.", vbExclamation, "Hinweis"           'Fehlermeldung, wenn keine Eingabe erfolgt ist. Der vordefinierte Eintrag "Nachname" ist nichtgültig
            End If
        Else
            MsgBox "Abbrechen nicht gestattet.", vbExclamation, "Hinweis"              'Fehlermeldung, wenn der Button Abbrechen gedrückt wird
        End If
    Loop
    'MsgBox "Geschafft :-)", vbInformation, "Information"


'
'EingabeBox für den Vorname
'
    Do
        strVerant_Vorname = InputBox("Bitte Vorname eingeben.", "Vorname", "Vorname")
        If StrPtr(strVerant_Vorname) <> 0 Then
           If strVerant_Vorname <> "Vorname" Then
                       Exit Do
           Else
              MsgBox "Gib deinen Vornamen ein.", vbExclamation, "Hinweis"           'Fehlermeldung, wenn keine Eingabe erfolgt ist. Der vordefinierte Eintrag "Vorname" ist nichtgültig
           End If
        Else
            MsgBox "Abbrechen nicht gestattet.", vbExclamation, "Hinweis"           'Fehlermeldung, wenn der Button Abbrechen gedrückt wird
        End If
    Loop
    

'
' Eingabe der Personalnummer
' Für die Eingabe sind nur Zahlen erlaubt
'
    Do
        strVerant_Personal = InputBox("Bitte Personalnummer eingeben.", "Personalnummer")
        If StrPtr(strVerant_Personal) <> 0 Then
            If IsNumeric(strVerant_Personal) Then                                               ' IsNumeric erlaubt nur die Eingabe von Zahlen
                If CDbl(strVerant_Personal) >= 1 And CDbl(strVerant_Personal) <= 1000 Then      ' Der Zahlenbereich, der für die Eingabe erlaubt ist
                    If Fix(CDbl(strVerant_Personal)) = CDbl(strVerant_Personal) Then
                        Exit Do
                    Else
                        MsgBox "Bitte nur ganze Zahlen eingeben.", vbExclamation, "Hinweis"
                    End If
                Else
                    MsgBox "Die Personalnummer der Group besteht aus Zahlen zwischen 1 und 1000.", vbExclamation, "Hinweis"
                End If
            Else
                MsgBox "Bitte nur Zahlen eingeben.", vbExclamation, "Hinweis"
            End If
        Else
            MsgBox "Abbrechen nicht gestattet.", vbExclamation, "Hinweis"
        End If
    Loop
    MsgBox "Anmeldung erfolgreich an der Lagertabelle für " & strUnternehmen & " durchgeführt." & vbCr _
            & vbCr _
            & "Have fun!", vbInformation, "Information"                                            'Willkommensnachricht nach erfolgreicher Anmeldung
    
    
' Erst nach erfolgreicher Eingabe werden alle Werte in die Zellen geschrieben



Sheets("Verant").Select                                                ' Tabelle "Verant" wird ausgewählt
    Range("C8").Value = strVerant_Nachname                    ' Fügt den Nachnamen ein
    Range("D8").Value = strVerant_Vorname                     ' Fügt den Vornamen ein
    Range("B8").Value = strVerant_Personal           ' Fügt die Personalnummer ein
    Range("E8").Value = Date                                   ' Fügt das heutige Datum ein
    Range("F8").Value = Time                                   ' Fügt die aktuelle Zeit ein
    

' Ruft weitere Makros auf
Call Verant_Wert

End Sub

Private Sub Verant_Wert()
'
' ' Schreibt die Werte fortlaufenden in die Tabelle 
'
Sheets("Verant").Select
Range("D65536").End(xlUp).Offset(1, 0) = Range("D8") ' Vorname: Übernimmt den Wert aus D8 in die nachfolgende Zelle D9

Range("C65536").End(xlUp).Offset(1, 0) = Range("C8") ' Nachname

Range("B65536").End(xlUp).Offset(1, 0) = Range("B8") ' Personalnummer

Range("E65536").End(xlUp).Offset(1, 0) = Range("E8") ' Datum der Anmeldung

Range("F65536").End(xlUp).Offset(1, 0) = Range("F8") ' Zeit der Anmeldung
End Sub

Erklärung

Der Code-Block besteht aus insgesamt drei Bereichen

  • Bereich zur Deklaration der Variablen
  • Makro Verant_Anmeldung
  • Makro Verant_Wert

Bereiche 1: Variablen Deklaration

Die Variablen werden in diesem Beispiel nicht in einem Makro sondern im Modul deklariert, so dass eine makroübergreifende Verwendung möglich ist. Im Beispiel werden die Variablen für das Makro Verant_Anmeldung und Verant_Wert verwendet.
In diesem Fall ist das eine sinnvolle Maßnahme, da der Benutzer die Werte für die Variablen eingibt und diese dann weiterverwendet werden können.
Im Beispiel wird sogar eine Variable mit Public verwendet, also eine modulübergreifende Variable. Somit ist es möglich, die Personalnummer in jedem Makro mit strVerant_Personal aufzurufen, ohne sie erneut zu deklarieren und den Wert zu holen. Der Wert der Variable verbleibt fest im Speicher.

Bereich 2: Makro Verant_Anmeldung

Das Makro besteht aus mehreren Teilen. Im ersten Bereich wird der Nachname des Benutzers durch eine Inputbox abgefragt. Der eingegebene Wert wird zur späteren verwendung der Variable strVerant_Nachname übergeben.
Die Eingabe fordert die Eingabe eines Wertes, sollte kein Wert eingegeben werden, dann erscheint automatisch die Meldung "Gib deinen Nachnamen ein". Das Abbrechen des Vorgangs durch den Benutzer ist ebenfalls nicht gestattet. Klickt er auf den Button Abbrechen, erscheint die Meldung "Abbrehcen nicht gestattet".

Der zweite Bereich frägt den Vornamen ab und ist analog zur Abfrage des Nachnamens zu betrachten.

Im dritten Bereich wird die Personalnummer abgefragt. Hier ist eine Besonderheit verbaut. Der Benutzer muss einen numerischen Wert eingeben, da sonst eine Fehlermeldung ausgegeben wird. Außer dieser Besonderheit ist die Abfrage analog zu den beiden vorherigen zu betrachten.

Im vierten Bereich werden die erfassten Daten, also Nachname, Vorname und Personalnummer in die Tabelle "Verant" in angegebenen Zellen geschrieben.
Hier wird auch die Verwendung der Variablen deutlich. Der Inhalt der Variablen wird als Wert in die angegebenen Zellen "entleert".

Kommentare (0) Trackbacks (0)

Zu diesem Artikel wurden noch keine Kommentare geschrieben.


Leave a comment

Noch keine Trackbacks.

%d Bloggern gefällt das: