Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zahl in Zelle Schreiben

Zahl in Zelle Schreiben
05.03.2016 15:43:00
MaBlu
Hallo
ich möchte die Jahreszahl in einem Kalender eingeben damit sich dieser auf das Neue Jahr einstellt, die Seite ist geschützt, und es gibt noch mehr einstellbuttons.
Dazu habe ich ein Makro das mir über eine Inputbox die Möglichkeit gibt die Zahl einzutragen.
Nur kann ich jetzt alles eintragen was ich will, wie kann ich das verhindern ich möchte nur die Zahl vierstellig eingeben können?
Beispiel:
Sub Inputbox_öffnen()
ActiveSheet.Unprotect Password:=""
Range("K1").Select
Dim E As Variant
E = InputBox("Jahreszahl eintragen", "Eingabebox")
Range("K1").Value = E
ActiveSheet.Protect Password:=""
End Sub
oder macht man das mit einer Userform, aber da weiss ich nicht wie?
Danke für eure Hilfe
MaBlu

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahl in Zelle Schreiben
05.03.2016 16:37:37
Werner
Hallo,
versuch mal
Sub Inputbox_öffnen()
ActiveSheet.Unprotect Password:=""
Dim E As Variant
E = InputBox("Jahreszahl eintragen", "Eingabebox", 1, Type:=1) 'Typ 1 = nur Zahlen
If StrPtr(E) = 0 Then Exit Sub 'Ausstieg wenn Abbrechen gedrückt
If E ="" Or E  9999 Then
MsgBox "Falsche Eingabe."
Else
Range("K1").Value = E
End If
ActiveSheet.Protect Password:=""
End Sub
Ungetestet.
Gruß Werner

Anzeige
AW: Zahl in Zelle Schreiben
05.03.2016 21:39:18
René
Hallo MaBlu,
Werner hat dir ja schon eine Antwort gegeben, aber auch ich möchte dir noch eine Möglichkeit nennen :).
Da ich selbst auf Arbeit mit Excel und VBA zu tun habe, weiß ich das man vieles gerne individuell eingestellt haben möchte.
Ich würde dir Vorschlagen, sofern du ein Arbeitsblatt für Formeln hast, dort diese 3 Varianten zu hinterlegen (Untereinander)
=Jahr(Heute())-1
=Jahr(Heute())
=Jahr(Heute())+1
Dann in dem Arbeitsblatt wo du das Jahr für den Kalender hast, über "Daten", "Datenüberprüfung" der zelle eine Liste mit Dropdownfunktion zu hinterlegen für die oberen 3 Zellen.
So kann du dann Individuell deinen kalender einstellen, auf das Jahr was du möchtest.
Kannst du selbst auch variieren, wenn du z.B. das vergangene Jahr nicht brauchst, kann der Code weg.
Falls du beim Start immer Automatisch, das jetzige Jahr drin haben willst.
Einfach die zelle per VBA einfügen lassen. Hier ein Beispiel:
VBA CODE, einzutragen in "DieseArbeitsmappe":
Private Sub Workbook_Open()
worksheets("Tabelle1").Range("A1").value = Worksheets"(Tabelle1").Range("A1").value
End Sub
Tabelle1 und Zelle A1, musst du ja individuell anpassen.
Dies wäre meine Lösung welche ich nutzen würde.
Vielleicht sagt auch diese dir zu, bzw. gibt dir Gedanken für was komplexeres :).
Mfg René

Anzeige
AW: Zahl in Zelle Schreiben
06.03.2016 08:56:04
MaBlu
Hallo Rene
ja das geht und gibt mir Ideen wie man das alles machen könnte. Ich möchte aber für dieses Projekt lieber das Makro nutzen vor allem weil die Seite geschützt ist und weil ich ein beliebiges Jahres Datum haben muss.
Besten Dank für die Hilfe.
MaBlu

AW: Zahl in Zelle Schreiben
06.03.2016 08:46:56
MaBlu
Hallo Werner
geht leider nicht bleibt bei Type:=1 stehen, bennantes Argument nicht gefunden?
hab dann probiert und jetzt geht es aber ich weiss nicht ob das dein Vorschlag war?
Denn jetzt kommt in der Inputbox immer 2016
Sub Inputbox_öffnen()
ActiveSheet.Unprotect Password:=""
Dim E As Variant
E = InputBox("Jahreszahl eintragen", "Eingabebox", 2016) 'Typ 1 = nur Zahlen
If StrPtr(E) = 0 Then Exit 

Sub 'Ausstieg wenn Abbrechen gedrückt
If E = "" Or E  9999 Then
MsgBox "Falsche Eingabe."
Else
Range("K1").Value = E
End If
ActiveSheet.Protect Password:=""
End Sub
Gruss MaBlu

Anzeige
AW: Zahl in Zelle Schreiben
06.03.2016 09:06:06
MaBlu
Hallo Werner
geht leider nicht bleibt bei Type:=1 stehen, benanntes Argument nicht gefunden?
hab dann probiert und jetzt geht es aber ich weiss nicht ob das dein Vorschlag war?
Denn jetzt kommt in der Inputbox immer 2016
Sub Inputbox_öffnen()
ActiveSheet.Unprotect Password:=""
Dim E As Variant
E = InputBox("Jahreszahl eintragen", "Eingabebox", 2016) 'Typ 1 = nur Zahlen
If StrPtr(E) = 0 Then Exit 

Sub 'Ausstieg wenn Abbrechen gedrückt
If E = "" Or E  9999 Then
MsgBox "Falsche Eingabe."
Else
Range("K1").Value = E
End If
ActiveSheet.Protect Password:=""
End Sub
Gruss MaBlu

Anzeige
AW: Zahl in Zelle Schreiben
06.03.2016 09:16:37
Werner
Hallo,
nicht so ganz, du hast den Code ja jetzt auf zwei Sub aufgeteilt. Nimm mal das:
Sub Inputbox_öffnen()
Dim E As Variant
wiederholen:
E = InputBox("Jahreszahl eintragen", "Eingabebox")
If StrPtr(E) = 0 Then Exit Sub 'Ausstieg wenn Abbrechen gedrückt
If E = "" Or E  9999 Then
MsgBox "Falsche Eingabe."
GoTo wiederholen
Else
ActiveSheet.Unprotect Password:=""
Range("K1").Value = E
End If
ActiveSheet.Protect Password:=""
End Sub
Wenn du möchtdest, dass bei Start der Inputbox bereits ein Wert voreingetragen ist dann ersetze im Code die Zeile
E = InputBox("Jahreszahl eintragen", "Eingabebox")
durch
E = InputBox("Jahreszahl eintragen", "Eingabebox"), 2016
Gruß Werner

Anzeige
AW: Zahl in Zelle Schreiben
06.03.2016 09:38:02
MaBlu
Hallo Werner
Ja genau das war das, was ich gesucht habe super das hat bestens geklappt vielen vielen Dank!
PS: das waren nicht 2 Sub ich hab's nicht hingekriegt dass das im Textfeld normal gekommen ist?
Es alleine die 2. Sub abgezogen vom then Exit Sub?
Wünsche dir einen schönen Sonntag
MaBlu

Anzeige
AW: Danke für die Rückmeldung owT
06.03.2016 10:04:17
Werner
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zahl in Zelle Schreiben mit VBA


Schritt-für-Schritt-Anleitung

Um eine Jahreszahl in eine geschützte Zelle in Excel zu schreiben, kannst du ein VBA-Makro verwenden. Hier ist eine einfache Anleitung, um das Makro zu erstellen, das die Eingabe einer vierstelligen Zahl ermöglicht:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf VBAProject (dein Arbeitsblattname) klickst und Einfügen > Modul auswählst.

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Sub Inputbox_öffnen()
       ActiveSheet.Unprotect Password:=""
       Dim E As Variant
       E = InputBox("Jahreszahl eintragen", "Eingabebox")
       If StrPtr(E) = 0 Then Exit Sub 'Ausstieg wenn Abbrechen gedrückt
       If E = "" Or E < 1000 Or E > 9999 Then
           MsgBox "Falsche Eingabe. Bitte eine vierstellige Zahl eingeben."
       Else
           Range("K1").Value = E
       End If
       ActiveSheet.Protect Password:=""
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro Inputbox_öffnen auswählst und auf Ausführen klickst.


Häufige Fehler und Lösungen

  • Fehler: "Microsoft Excel kann keine neuen Zellen einfügen, weil am Ende des Arbeitsblatts keine Zellen vorhanden sind."

    • Lösung: Überprüfe, ob das Arbeitsblatt geschützt ist oder ob du überhaupt in die Zelle schreiben darfst. Stelle sicher, dass du die Zelle vorher mit ActiveSheet.Unprotect entsperrst.
  • Fehler: Eingabe wird nicht als vierstellige Zahl akzeptiert.

    • Lösung: Stelle sicher, dass die Validierung im Code korrekt ist. Achte darauf, dass die Bedingungen für die Eingabe (If E < 1000 Or E > 9999) richtig gesetzt sind.

Alternative Methoden

Neben der Verwendung einer Inputbox kannst du auch eine Userform erstellen, um die Eingaben zu steuern. Hier ein einfacher Ansatz:

  1. Erstelle eine Userform im VBA-Editor.
  2. Füge ein Textfeld und einen Button hinzu.
  3. Im Button-Code kannst du dann den Wert in die gewünschte Zelle schreiben.
Private Sub cmdSubmit_Click()
    Dim E As Long
    If IsNumeric(txtYear.Value) And Len(txtYear.Value) = 4 Then
        E = CLng(txtYear.Value)
        Worksheets("Tabelle1").Range("K1").Value = E
    Else
        MsgBox "Bitte eine gültige vierstellige Zahl eingeben."
    End If
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du VBA in Zellen schreiben kannst:

  • Zahl in Zelle schreiben:

    Range("A1").Value = 2023
  • Text in Zelle schreiben:

    Range("B1").Value = "Jahr 2023"
  • Zahl hinter Text hinterlegen:

    Range("C1").Value = "Aktuelles Jahr: " & 2023

Tipps für Profis

  • Vermeide es, direkt auf die Zelle zuzugreifen, während das Arbeitsblatt geschützt ist. Nutze immer ActiveSheet.Unprotect und ActiveSheet.Protect, um sicherzustellen, dass du während der Makroausführung auf die Zelle zugreifen kannst.
  • Verwende Application.OnTime, um zeitgesteuerte Makros zu erstellen, die nach einer bestimmten Zeitspanne ausgeführt werden.
  • Experimentiere mit der Datenüberprüfung, um die Eingaben in Zellen noch weiter zu steuern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur Zahlen eingegeben werden? Um sicherzustellen, dass nur Zahlen eingegeben werden, kannst du die Inputbox wie folgt anpassen:

E = InputBox("Jahreszahl eintragen", "Eingabebox", 2016)

2. Was mache ich, wenn das Makro nicht funktioniert? Überprüfe, ob du die richtige Zelle angegeben hast und ob das Arbeitsblatt geschützt ist. Achte darauf, dass dein Code keine Syntaxfehler enthält.

3. Kann ich das Makro auf eine bestimmte Zelle anwenden? Ja, ändere einfach Range("K1").Value in die gewünschte Zelle, z.B. Range("A1").Value.

4. Wie kann ich das Jahr automatisch beim Öffnen der Datei eintragen? Verwende das Workbook_Open Ereignis, um beim Öffnen der Datei automatisch ein Jahr in eine Zelle zu schreiben:

Private Sub Workbook_Open()
    Worksheets("Tabelle1").Range("A1").Value = Year(Date)
End Sub

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige