Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Feldbegrenzung bei geschützten Zellen





Frage

Hallo, hallöchen, es ist Samstag und was macht man? Für die Firma Experimente, nunja, folgendes Problem versuche ich zu lösen: Excel-Tabelle zum Ausfüllen mit geschützten Zellen zu bauen ist ja nun kein Problem. Nun habe ich aber auch Felder, in denen der Ausfüller Text eingeben muss und zwar von unbestimmter Kürze ABER mit bestimmter Länge! Zellen zu verbinden kein Problem, Textfeldeinfügen auch kein Problem. Nur kann der Ausfüller in beiden Fällen so viel Text schreiben, das beim Ausdruck der Text, den er über die angezeigte Größe des Feldes geschrieben hat, nicht mehr mit ausgedruckt wird. Wie kann ich also nun ein Feld in einer geschützten Tabelle anlegen, welches ich mit maximalen Einträgen beschränken kann? Trotz allem einen schönen Samstag und vielen Dank im Voraus Markus

Antwort 1 von Beverly

Hi Markus,

verwende eine TextBox aus der Steuerelement-Toolbox mit diesem Code

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Len(TextBox1) > 9 Then
        MsgBox "Nur 10 Zeichen möglich"
        TextBox1 = Left(TextBox1, 9)
    End If
End Sub


Bis später,
Karin

Antwort 2 von gast123

hi all

daten/gueltigkeit

gruss gast123

Antwort 3 von DerNordBerliner

Hallöchen,

beide Antworten sind nicht schlecht, Karin, deine hilft noch besser, da schneller anzupassen.
Jetzt aber folgendes, bei 10 oder 30 Zeichen ist das kein Problem. Doch bei größerer Anzahl wird es mit dem Zählen des dummen Ausfüllers schwierig. Gibt es eine Formel, die Zeitgleich bei der Eingabe in einer Zelle die noch verbleibende Anzahl der Zeichen anzeichen kann?

Antwort 4 von Beverly

Hi Markus,

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If Len(TextBox1) < 10 Then Cells(1, 1) = "Es verbleiben noch " & 9 - Len(TextBox1)
End Sub


Bis später,
Karin

Antwort 5 von DerNordBerliner

Hallo Karin,

Code leuchtet mir ein, doch wie bekomme ich den dazu, das er in auch angezeigt wird. Da hören meine Kenntnisse auf, leider.

Danke schon mal
Markus

Antwort 6 von Beverly

Hi Markus,

wohin hast du den Code kopiert? Er gehört genau dort hin wo auch der andere sich befindet.

Bis später,
Karin

Antwort 7 von DerNordBerliner

Habe ich ja auch gemacht, sie stehen beide untereinander. Ich verstehe nur nicht, wo die Anzeige des Textes "Es verbleiben noch ..." angezeigt werden soll.
Wie bekomme ich eine Zelle dazu, diesen Text anzuzeigen.

Antwort 8 von Beverly

Hi Markus,

die Anzeige erfolgt in Zelle A1. Das ergibt sich aus diesem Codeteil

Cells(1, 1) -> Zelle(Zeile, Spalte)

Bis später,
Karin

Antwort 9 von DerNordBerliner

Verstanden, demnach müßte der Code bei Ansicht in Zelle C451 lauten:
(451, 3) da steht aber nichts.

Weiterhin ist das Problem, das bei Tab oder Mausklick das Textfeld nicht zum Schreiben aktiviert wird. Klicke ich in der geschützten Tabelle auf das Textfeld, erscheint der Code. Nur mit der rechten Mousetaste kann der Ausfüller über Textfeld bearbeiten in das Feld kommen.

Antwort 10 von Beverly

Hi Markus,

du musst entweder die Zelle entsperren, oder im Code den Blattschutz aufheben, den Eintrag tätigen und dann den Blattschutz wieder setzen.

Beis später,
Karin

Antwort 11 von DerNordBerliner

Ich glaube ich drücke mich falsch aus.

Es soll doch in der geschützten Tabelle ein Feld existieren, in dem der Ausfüller ohne den Schutz aufheben zu können, Text von einer bestimmten Länge eingeben soll. Unter dem Feld, was auch immer für ein Feld, soll in einer Zelle erscheinen, "hey du Dösbattel, du hast nur noch x Zeichen zum Schreiben!"

Vielleicht können wir telefonieren?.

Antwort 12 von Beverly

Hi Markus,

wenn du nur die Zelle - also C451, in welcher die Anzeige der noch verbleibenden Zeichen erfolgen soll, entsperrst, dann kann der Benutzer doch noch lange nicht den Rest des Tabellenblattes bearbeiten. Sobald er in dieser Zelle irgendetwas verändert, wird beim nächsten Klick in das Textfeld diese Änderung doch wieder überschrieben.

Die andere Möglichkeit, den Schutz mittels Code vorübergehend aufzuheben:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    ActiveSheet.Unprotect
    If Len(TextBox1) < 10 Then Cells(451, 3) = "Es verbleiben noch " & 9 - Len(TextBox1)
    ActiveSheet.Protect
End Sub

Bis später,
Karin

Antwort 13 von DerNordBerliner

Liebe Karin,

ich habe dir mal mein Problem an deine Email geschickt.

Hoffentlich kannst du mir damit mehr helfen.

Danke
Markus

Antwort 14 von Beverly

Hi Markus,

verwende ein Textfeld aus der Steuerelement-Toolbox, nicht aus der Zeichnen-Symbolleiste. Die Toolbox findest du nach einem Rechtsklick auf die Symbolleisten und musst sie einfach nur aktivieren.

Mache dann einen Rechtsklick auf das Element -> Eigenschaften und schreibe bei MultiLine den Wert "True" rein. Verwende als Code diesen
Private Sub TextBox1_GotFocus()
    ActiveSheet.Unprotect
    If Len(TextBox1) > 0 Then
        Cells(144, 3) = "Es verbleiben noch " & 499 - Len(TextBox1) & " Zeichen"
    Else
        Cells(144, 3) = "Es verbleiben noch 500 Zeichen"
    End If
    ActiveSheet.Protect
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Len(TextBox1) > 499 Then
        MsgBox "Nur 500 Zeichen möglich"
        TextBox1 = Left(TextBox1, 499)
    End If
End Sub

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    ActiveSheet.Unprotect
    If Len(TextBox1) > 0 Then
        Cells(144, 3) = "Es verbleiben noch " & 500 - Len(TextBox1) & " Zeichen"
    Else
        Cells(144, 3) = "Es verbleiben noch 500 Zeichen"
    End If
    ActiveSheet.Protect
End Sub


Deaktiviere dann in der Toolbox den Entwurfsmodus (Klick auf den Button mit einem grünen Dreieck, Lineal und Bleistift
Bis später,
Karin

Antwort 15 von DerNordBerliner

Es funzt,

vielen und lieben Dank und noch ein schönes Wochenende.

Markus

Antwort 16 von Beverly

Hi Markus,

noch etwas: vermeide nach Möglichkeit verknüpfte Zellen - sie machen nur Probleme, insbesondere wenn man mit VBA auf sie zugreifen muss. Da du keine Gitternetzlinien anzeigst, kannst du ja einen Rahmen um mehrere Zellen ziehen ohne Zwischenlinien und niemand wird es bemerken.

Dir ebenfalls noch ein schönes Wochenende.

Bis später,
Karin

Antwort 17 von DerNordBerliner

Liebe Karin,

eine Frage noch zum Schluss:

Wie kann ich die Entertaste als Absatzmarke in diesen Feldern nutzen.

Gruß Markus

Antwort 18 von Beverly

Hi Markus,

ändere den entsprechenden Code wie folgt

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then TextBox1 = TextBox1 & vbLf
    ActiveSheet.Unprotect
    If Len(TextBox1) > 0 Then
        Cells(144, 3) = "Es verbleiben noch " & 500 - Len(TextBox1) & " Zeichen"
    Else
        Cells(144, 3) = "Es verbleiben noch 500"
    End If
    ActiveSheet.Protect
End Sub


Bis später,
Karin

Antwort 19 von DerNordBerliner

Hallo Karin,

natürlich funzt auch das. Somit recht herzlichen Dank für alles.

Lieben Gruß vom Markus

Antwort 20 von DerNordBerliner

Hallo liebe Karin,

hast du eingentlich meine Mail erhalten?

Lieben Gruß vm Markus

Antwort 21 von Beverly

Hi Markus,

nein, eine Mail habe ich leider nicht erhalten. Wann hast du sie denn geschickt? Sicher ist sie im Spam-Ordner untergegangen. Wenn du sie mir nochmal schickst, weiß ich ja jetzt , dass ich besonders darauf achten muss.

Bis später,
Karin

Antwort 22 von DerNordBerliner

Hallo Karin,

ich habe sie dir jetzt noch einmal geschickt.
Absender markus@markus-....de

Antwort 23 von Beverly

Hi Markus,

du musst das VBA-Projekt mit einem anderen Passwort als dem im Code festgelegten Passwort für das Tabellenblatt schützen.

Bis später,
Karin