Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
996to1000
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
Inhaltsverzeichnis

Wiederholung - Inputbox

Wiederholung - Inputbox
04.08.2008 17:54:53
lasmik
hallo
ich wiederhol hier noch mal meine fragen. vieleicht gibts ja doch noch ne lösung. oder eine variante die ich umsetzen kann. vielen dank an Hajo_Zi.
ich bräuchte hilfe bei folg. problemen:
1. beim aktivieren (anklicken) der zelle c3 soll eine inputbox erscheinen in die man den namen schreiben muss. dabei sollen nur buchstaben zugelassen werden. bei eingabe von zahlen oder sonderzeichen soll es eine fehlermeldung geben.
2. beim aktivieren (anklicken) der zelle h3 soll eine inputbox erscheinen in die man das geb.-datum schreiben muss. die form soll tt.mm.jjjj sein. bei anderen eingaben soll wieder eine fehlermeldg. erscheinen.
evt. zu beachten: tabellenblatt ist geschützt (protect/unprotect) evt vorher aufheben und wieder aktivieren
zelle c3 ist eine verbundene zelle mit d3 und zelle h3 ist verb. mit i3.
vielen dank schon mal vorab

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

Betreff
Datum
Anwender
Anzeige
AW: Wiederholung - Inputbox
04.08.2008 18:17:00
Matthias
Hallo
Hajo hat Dir doch ein Beispiel gepostet.
https://www.herber.de/forum/archiv/996to1000/t998549.htm#998551
Warum glaubst Du es denn nicht ? das geht nicht während der Eingabe bei einer INPUTBOX
Du kannst nur nach der Eingabe (also nach dem Ok gedrückt wurde) prüfen, was die Inputbox für einen Inhalt hat. Du könntest also eine Schleife über den String schicken und prüfen, ob jedes einzelne Zeichen - keine Zahl ist.
Sollte ein einziges Zeichen eine Zahl sein [ z.B.(IsNumeric) ]
dann setze eine Sprungmarke z.B. mit GoTo Nochmal
und vor deine Zeile mit der Inputbox, schreibe diese Zeile Nochmal:
Gruß Matthias

Anzeige
AW: Wiederholung - Inputbox
04.08.2008 19:38:00
lasmik
hallo
danke für die hinweise. aber könntest du das für einen "vba-unwissenden" etwas ausführlicher beschreiben.
ich habe hajo`s sachen versucht umzusetzen. nur kann ich jetzt immer noch alles in die zelle eingeben und wenn ich die zelle anklicke kommt ein graues leeres fenster.
danke schon mal

ein Versuch ...
04.08.2008 20:54:00
Matthias
Hallo
Ich habe hier ein Beispiel für Dich erstellt.
Versuche Dich mal da reinzudenken.
Userbild
hier die Datei dazu:
https://www.herber.de/bbs/user/54338.xls
Userbild

Anzeige
AW: ein Versuch ...
05.08.2008 19:25:55
lasmik
hallo matthias
also erst mal vielen vielen dank für deine mühe. so kann ich das alles schon mal nachvollziehen und weis was wohin kommt.
allerdings gibt es ein problem mit diesem teil:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$3" Then UserForm1.Show
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
Range("c3").MergeCells = False
ActiveSheet.Name = Range("c3").Text
Range("c3:d3").MergeCells = True
ActiveSheet.Protect
End Sub


der erste teil ist ja von dir den 2. teil gibt es schon in der tabelle. beide teile stehen untereinander in einem fenster ( tabelle1 (code)).egal ob ich deinen teil vor oder hinter meinen teil schreibe die textbox wird beim anklicken von c3 nicht mehr geöffnet. wenn ich die im vba editor als testlauf starte klappt es, nur eben beim anklicken in der tabelle nicht.
was mach ich falsch?
wäre es auch mgl. statt alle buchstaben des namens gross zu schreiben nur den ersten gross zu schreiben und alle anderen klein?
vielen dank für deine mühe lasmik

Anzeige
AW: ein Versuch ...
05.08.2008 19:41:11
Horst
Hi,
vor dem Klicken der Zelle C3 muss eine andere Zelle aktiv sein.
mfg Horst

AW: ein Versuch ...
05.08.2008 21:20:07
Matthias
Hallo

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
Range("c3").MergeCells = False
ActiveSheet.Name = Range("c3").Text
Range("c3:d3").MergeCells = True
ActiveSheet.Protect
End Sub


das ist (bitte nicht persönlich nehmen) völliger Schwachsinn
Private Sub Worksheet_Change(ByVal Target As Range)
 Tritt immer ein, wenn Du irgend eine Zelle änderst.
ActiveSheet.Unprotect
 Blattschutz aufheben
Range("c3").MergeCells = False
 Verbundene Zelle aufheben (verb. Zellen sind eh der größte Müll von MS)
ActiveSheet.Name = Range("c3").Text
 hier vegibst Du den Namen des Tabellenblattes
Range("c3:d3").MergeCells = True
 Zellen wieder verbinden
ActiveSheet.Protect
 Blattschutz setzen
Und nun erklär bitte mal was Du damit eigentlich bezweckst.
Gruß Matthias

Anzeige
AW: ein Versuch ...
06.08.2008 06:46:00
lasmik
hallo
ja genau das was du aus dem macro rausgelesen hast. der name der in c3 ( verb. mit d3) eingetragen wird ( das ist der für den ich deine hilfe bekam zwecks nur buchstaben) wird dann an das tabellenblatt übertragen. soll heissen das tabellenblatt bekommt den inhalt von c3 als namen. funkt. aber nur, jedenfalls bei mir mit meinen bescheidenen kenntnissen, wenn ich vorher den zellverbund auflöse.
danke lasmik

nochmal...
06.08.2008 16:20:00
Matthias
Hallo lasmik
Hast du dir denn nicht nochmal Gedanken darüber gemacht, was im Code eigentlich passiert.
Bei jeder Änderung in jeder Zelle im Tabelleblatt wird dieser Code automatisch ausgeführt.
Willst Du das denn wirklich?
Was macht das denn für einen Sinn ?
Wenn Du z.B in A1 etwas änderst läuft der Code durch
Wenn Du z.B in A2 etwas änderst läuft der Code durch
Wenn Du z.B in A3 etwas änderst läuft der Code durch
Wenn Du z.B in A4 etwas änderst läuft der Code durch
u.s.w.
Wenn Du z.B in B1 etwas änderst läuft der Code durch
Wenn Du z.B in B2 etwas änderst läuft der Code durch
Wenn Du z.B in B3 etwas änderst läuft der Code durch
Wenn Du z.B in B4 etwas änderst läuft der Code durch
u.s.w.
Und das in ALLEN ZELLEN der Tabelle.
Warum also willst Du jetzt dem Blattschutz aufheben, wenn sich der Name in C3
z.B überhaupt nicht ändert ?
Verstehst Du was ich meine?
Wenn z.B "lasmik" in C3 steht undf Dein Blatt nun auch schon "lasmik" heißt
und Du nun aber z.B in A1 oder in A2 oder in Z500 oder in X7000 oder oder oder ... etwas änderst, so läuft dieser Code immer durch.
  • Es wird also immer das Blatt freigegeben

  • Deine verb. Zellen werden immer gelöst

  • Das Blatt erhält den Namen "lasmik" [obwohl es ja schon so heißt]

  • Deine Zellen werden wieder verbunden

  • Blatt wird wieder geschützt

  •    Und was es nun gebracht ? Garnix, das Blatt heißt genauso wie vorher.


       Dieser Code reicht völlig aus und wird nur ausgeführt, wenn sich C3 ändert
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C3")) Is Nothing And Target.Count = 1 And Not IsEmpty(Target)  _
    Then ActiveSheet.Name = Target.Value
    End Sub
    


    Userbild

    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige