Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Zelleninhalt scrollen, geht das?





Frage

Moin! Ich habe eine Zelle, die ich in der Höhe nicht verändern kann, weil drumherum andere Zellen ihre Größe bezogen auf die Inhalte behalten müssen. Leider enthält diese Zelle per SVERWEIS zum Teil sehr lange Einträge, die man dann nicht vollständig lesen kann. Der SVERWEIS verhindert, dass die Daten in der Eingabezeile erscheinen, ein Zeilenumbruch nützt nichts, weil dann auch die benachbarten Zellen größer werden. Meine Idee: ein Scrollbalken innerhalb der Zelle um den Inhalt auf und ab scrollen zu können. Ist sowas mit vba machbar? Ich hab es schon mit einem Listenfeld versucht, aber das Listenfeld lässt auch nur eine Zeile zu. Freue mich über jede Anregung oder Idee. Frohe Weihnachtszeit Euch allen. P.S.: Ach ja, und dann suche ich nach einer Lösung ohne einen Schutz des gesamten Tabellenblattes in einem Teilbereich nur in bestimmten Zellen eine Eingabe zuzulassen bzw. bestimmte Zellen zu sperren. Der obere linke Bereich der Tabelle ist ein Formular, welches nicht verändert werden darf aber in der gleichen Tabelle befinden sich noch andere Daten, die regelmäßig gepflegt werden müssen. Auslagern ist nicht, weil das Formular mit einem Drop down- Menü (Daten- Gültigkeit - Liste) auf Bereiche dieser Daten zugreift und das nicht Tabellenübergreifend geschehen kann. Kreativität ist also gefragt...

Antwort 1 von nighty

hi alle

ein beispiel fuer begrenzte eingabe

bezugnehmend auf die reihenfolge muss in b3 anschliessend in b4 eingegeben werden



Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Call Makro01
End Sub

Private Sub Workbook_Open()
Call Makro02
End Sub

Sub Makro02()
Range("b3") = ""
Range("b4") = ""
Range("b3").Select
End Sub

Sub Makro01()
Do
If Range("b3") = "" Then
Range("b3").Select
Exit Do
Else
Exit Do
End If
Loop
Do
If Range("b4") = "" And Range("b3") <> "" Then
Range("b4").Select
Exit Do
Else
Exit Do
End If
Loop
End Sub


Antwort 2 von fehmarn-online

Hi!

Vielen Dank für den Beitrag.
Ich habe das mal in einer neuen Arbeitsmappe ausprobiert, komm aber nicht so recht klar.
Das Einzige, was passiert ist, dass der Eingabefocus auf b3 gesetzt wird. Ich kann aber trotzdem auch jederzeit in b2 oder b9 eintragen, egal, ob in b3 eine Eingabe erfolgte oder nicht.
Trage ich in b3 was ein und drücke Enter, springt die Eingabemarke auf b4, aber das war auch schon alles. Leider kenn ich mich mit vba nicht aus, so dass es mir nicht möglich ist den Sinn des Codes zu verstehen. Beide Makros werden in der Liste der Makros angezeigt, eingefügt habe ich den Code über den VBA-Editor durch Doppelklick auf "Diese Arbeitsmappe". Rufe ich das erste Makro aus der Liste manuell auf, springt der Cursor auf b3. Beim zweiten Makro tut sich nichts...
Was ist wrong?


Antwort 3 von LH407HAM

Hi Insulaner, ich habe das Problem (Dein Problem Nr:2) bei mir wie folgt gelöst:

a)Zellen in denen Änderung erlaubt sind markieren
b)Format
c)Zellen
d)Schutz
e)den Haken in gesperrt entfernen
f) Enter/o.k.
g)Extras
h)Blattschutz
i)Kennwort
j)Enter/o.k.
k)Problem gelöst
Vorsicht das ganze ist nur mit Blattschutz aktiv!

Ich hoffe es hilft! Wenn ich Deine Frage falsch verstanden habe sorry, von Excel habe ich kaum ne Ahnung. Gruß Heinz

Antwort 4 von nighty

hi detlef

du hast post erhalten(beispiel),und wie schon in der email gesagt,sag welche zellen anwaehlbar sein sollen,ich werd mich dann versuchen(schick mir deine tabelle).

gruss nighty

Antwort 5 von fehmarn-online

@LH407HAM

Hmmm, der Tipp ist schon richtig, danke dafür. Muss nur mal sehen, wie ich das umsetze, denn eigentlich will ich ja nur die direkt das Formular umgebenden Bereiche sperren, nicht das ganze Tabellenblatt. Aber damit wird es wohl gehen müssen, besseres fällt mir auch nicht ein... :-)


@nighty

Vielen dank für Dein Angebot, aber leider kam keine Email von Dir bei mir an und zweitens kann ich die Originaltabelle nicht rausgeben, weil sich dort Firmendaten befinden. Müsste ich dann mal umstricken, aber das wird richtig Arbeit und hätte dann mit der eigentlichen Sache wohl nichts mehr zu tun. Das Beispiel per Email würde mich schon interessieren. Vielleicht sendest Du es mir nochmals?

Gruß
Detlev

Antwort 6 von nighty

hi detlef

email ist raus :)

gruss micha

Antwort 7 von want2cu

HI Detlev,

du hast geschrieben: "Auslagern ist nicht, weil das Formular mit einem Drop down- Menü (Daten- Gültigkeit - Liste) auf Bereiche dieser Daten zugreift und das nicht Tabellenübergreifend geschehen kann."

Das stimmt erfreulicherweise nicht, wenn man weiss, wie es geht.
Der Bereich, aus dem die Listeneinträge stammen, kann in einem separaten Tabellenblatt (ggs. für den normalen Anwender ausgeblendet) stehen. Dieser Bereich muss lediglich einen NAMEN bekommen.
In deinem Formular trägst du dann bei DATEN-GÜLTIGKEIT-LISTE anstelle der Zellbezüge den von dir vergebenen Namen mit einem vorangestelltne Gleichheitszeichen ein. Damit kann Excel dann auch tabellenübergreifen (sogar dateiübergreifend) auf einen anderen Bereich zugreifen.
So kann man sehr einfach und sicher den "internen" Datenbereich von dem für den Anwender bestimmten Bereich trennen. Und dann ist die Sache mit dem Blattschutz auch wesentlich einfacher.

Über ein Feedback feue ich mich ;-)

CU
want2cu

Antwort 8 von nighty

hi detlef und der rest der welt :)

hier ein anderes beispiel

bereich$(var,0)=anfangsbereich
bereich$(var,1)=endbereich
bereich$(anzahl,var),anzahl sind die addierten bereiche,in diesem falle 0-2 also drei bereiche mit jeweils von-bis

bei der dim anweisung ist 2 die anzahl,wie auch bei der for next schleife die 2 die anzahl ist.
erhoehung der ersten dimension von 2 auf beliebig viele ist moeglich,erste dimension wie for next schleife ist synchron zu erhoehen,somit beliebig verschiedengrosse bereiche angegeben werden koennen grrrrr ich mag keine beschreibungen.

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Call Makro01
End Sub

Private Sub Workbook_Open()
Call Makro01
End Sub

Sub Makro01()
Dim bereich$(2, 1)
bereich$(0, 0) = "$A$3"
bereich$(0, 1) = "$A$5"
bereich$(1, 0) = "$B$3"
bereich$(1, 1) = "$B$5"
bereich$(2, 0) = "$D$3"
bereich$(2, 1) = "$D$5"
GoSub adresse
For tz% = 0 To 2
b1 = 0
If zeile1 >= Val(Mid$(bereich$(tz%, 0), 4, Len(bereich$(tz%, 0)))) And zeile1 <= Val(Mid$(bereich$(tz%, 1), 4, Len(bereich$(tz%, 1)))) Then
b1 = b1 + 1
End If
If Asc(spalte$) >= Asc(Mid$(bereich$(tz%, 0), 2, 1)) And Asc(spalte$) <= Asc(Mid$(bereich$(tz%, 1), 2, 1)) Then
b1 = b1 + 1
End If
If b1 = 2 Then b2 = 1
Next tz%
If b2 <> 1 Then Range("a3").Select
End
adresse:
adress$ = ActiveWindow.RangeSelection.Address
adress1 = Len(adress$)
For mo = 1 To adress1
If Mid$(adress, mo, 1) = "$" Then
llp = llp + 1
Else
If llp = 1 Then
spalte$ = spalte$ + Mid$(adress, mo, 1)
End If
If llp = 2 Then
zeile$ = zeile$ + Mid$(adress, mo, 1)
zeile1 = Val(zeile$)
End If
End If
Next mo
Return
End Sub

Antwort 9 von nighty

hi alle

hehe das kann keine formel :)

gruss nighty

Antwort 10 von fehmarn-online

Hi want2cu!

Leider geht es so nicht, grad probiert. Ich meine das auch schon probiert gehabt zu haben.
Ich gebe also in Daten - Gültigkeit - Liste ein: =Kunden
Dann soll er aus einem entsprechend vergebenen Namen den Bereich ersehen, auf den zugegriffen werden soll. Und das geht nicht, sondern führt zu einer Fehlermeldung. Die Meldung lautet: "Die Quelle muss eine getrennte Liste oder ein Bezug auf eine einzelne Zelle sein." Der Bereich, der entsprechend markiert und mit dem Namen "Kunden" versehen wurde, ist ein neu eingefügtes Tabellenblatt mit der Bezeichnung "Tabelle1" (wie auch sonst *lach*) und beinhaltet den Bereich A1-AL759.
Probiers mal aus... Ich habe hier Excel 2003 (10.2614.2625), möglicherweise regieren andere Excel-Versionen ja anders?

Antwort 11 von fehmarn-online

*lach* wer schwelgt denn da im Größenwahn?
Also ich lass es mal dahin gestellt, ob man solcherlei Dinge nicht mit Formeln auf die Reihe bekommt. Seit www.excelformeln.de bin ich mir da nicht mehr so sicher. Die Jungs sind da echt gut, nur mal so als kleiner Tipp. Alle Lösungen ohne ein Stückchen VBA.
Aber um das beurteilen zu können, nighty, wäre es hilfreich zu verstehen, was Dein Makro konkret tut. Soviel zum Thema Beschreibung. Versuchs bitte nochmal mit dem beschreiben... wäre sonst schade um Deine Mühe. Ich steig ehrlich gesagt nicht ganz durch, verstehe den Sinn des Makros nicht (keine Ahnung von VBA halt) und kann es auch nicht umsetzen, soll heissen zum Laufen bringen.
Lieben Gruß
Detlev


Antwort 12 von want2cu

Hallo Detlev,

das mit DATEN-GÜLTIGKEIT -LISTE und dem Namen klappt schon, auch bei deiner Excel-Version ;-)

Wenn du mit diesem Feature arbeitest, dann willst du doch in einem ganz bestimmten Feld auch nur eine Auswahl von ganz bestimmte Listeneinträgen haben (also nur Nachnamen, Orte etc.)
Der von dir mit einem Namen benannte Bereich darf folgerichtig daher auch nur eine einzige Spalte umfassen und nicht mehrere. Wenn du in deinem Formular für mehrere Felder auf deinen "Kundenbereich" zugreifen musst, dann musst du lediglich die einzelnen Spalten eindeutig benennen, also z.B. mit Ort, PLZ, Nachname etc.
Diese Namensbereiche kannst du bei DATEN-GÜLTIGKEIT-LISTE dann verwenden.

Gib doch bitte mal ein Feedback, ob das bei dir so wie beschrieben klappt oder was es noch für Probleme gibt.

Mit VBA kann ich leider nicht dienen, obwohl ich heute in einem andern Thread mein erstes funktionsfähiges kleines VBA-Modul als Lösung zum Besten gegeben habe ;-)))
Hat Nighty das überhaupt mitbekommen? Oder war er zu beschäftigt, weil er an dem o.g. Code programmiert hat? Oder war es gar ein Formelthread, der ihn nicht interessiert hat? ;-)

Herzliche Grüsse an alle Formel- und VBA-Freaks im Sn

CU
want2cu

Antwort 13 von fehmarn-online

Boa ey....
Manchmal ist man wie vernagelt. Na klar, ich hab es inzwischen auch hinbekommen. Hatte mich gewundert, weshalb es plötzlich funktioniert. Aber ist ja klar, die anzuzeigenden Daten können ja nur aus einer Spalte kommen, wie auch sonst?
Ich weiß beim besten Willen nicht, wieso ich einen Bereich markieren wollte.
Das Leben kann so einfach sein.... :-)
Liebe Grüße zur weihnachtszeit,
Detlev



Antwort 14 von fehmarn-online

...aber mein Problem längere Zellinhalte bei unveränderter Größe darzustellen, das hab ich immer noch nicht in den Griff bekommen :-(
Man könnte na klar über die Formatierung "an Zelle anpassen" wählen, aber meine Lupe ist dann zu klein *grins*. Also scrollen wäre schon ganz prima. Wer ist in der Lage ein Objekt wie eine Listbox so zu verändern, dass es mehrzeilig darstellt? Tja, ich leider nicht... bin ja sogar zu blöd für die einfachsten Dinge ... siehe oben.... *grunz*

Antwort 15 von nighty

hi alle

es sind nur zellen anwaehlbar aus diesen bereichen

rem hier anzahl der bereiche eintragen,zur zeit 2
Dim bereich$(2, 1)

rem anfang
bereich$(0, 0) = "$A$3"
rem ende
bereich$(0, 1) = "$A$5"

rem anfang
bereich$(1, 0) = "$B$3"
rem ende
bereich$(1, 1) = "$B$5"

usw.
bereich$(2, 0) = "$D$3"

wuerde man mehr bereiche haben wollen so ist es folgendermassen fortzufuehren
bereich$(3, 0) = "$A$13"
rem ende
bereich$(3, 1) = "$A$18"
bereich$(4, 0) = "$c$13"
rem ende
bereich$(4, 1) = "$c$15"

bei der dim anweisung auf 4 statt 2 und for next anweisung auf 4 statt 2



bereich$(2, 1) = "$D$5"

rem anzahl der bereiche
bereich$(2, 1) = "$D$5"

rem anfang
bereich$(2, 0) = "$D$3"

rem ende
bereich$(2, 1) = "$D$3"

rem hier die 2,ist die selbe anzahl bereiche
For tz% = 0 To 2

vielleicht besser jetzt ?

gruss nighty

Antwort 16 von want2cu

Hallo Detlev,

schön, dass es mit Daten-Gültigkeit-Liste nun doch geklappt hat. Das ist schon eine nützliche Sache, den Listenbereich aus der "Anwendertabelle" auszulagern.

Ich hoffe, dass dein Anzeigeproblem mit dem langen Text sich auch noch lösen läßt. Das kann m.E. nur mit VBA gehen, mit den normalen Bordmitteln oder mit alibas Superformeln dürfte das wohl nicht machbar sein.

CU
want2cu


Antwort 17 von nighty

hi alle :)

noch schnell ein kleines makro,was den vielleicht zu langen text als kommentar ablegt(quickinfo).

die aeusseren for next schleifen sind fuer ablauf in spalten und zeilen zustaendig.
spalten sind erlaubt von a-z
zeilen sind erlaubt von 1-ende eben

das makro taste beliebig grosse tabellen ab und untersucht sie auf zeichenlaenge,wird 10 ueberschritten wird deren inhalt als kommentar uebergeben,vielleicht besser lesbar ?

Sub Makro1()
Dim t%, t1%, zeile1%, adress1%, mo%
Dim spalte$, adress$
Set LastCell = ActiveSheet.Cells.SpecialCells(xlLastCell)
alta% = LastCell.Row
a% = LastCell.Row
Do While Application.CountA(Rows(a%)) = 0 And a% <> 1
a% = a% - 1
Loop
alta% = a%
altb% = LastCell.Column
b% = LastCell.Column
Do While Application.CountA(Columns(b)) = 0 And b% <> 1
b% = b% - 1
Loop
altb% = b%
zeile1% = alta%
lspalte% = altb%
Rem anfang spaltensuche,hier wird auf den asci code zurueckgegriffen a=65 b=66 usw.
For t% = 65 To 65 + lspalte
Rem anfang zeilensuche 0 bzw. zeilenende lzeile%
For t1% = 0 To zeile1%
Rem sind mehr 10 zeichen in der zelle ,so wird sie als kommentar uebergeben
Rem bei bedarf if zeile und endif loeschen ,dann wird die aktive zelle als kommentar uebergeben ohne selektion(anzahl zeichen)
If Len(Range(Chr$(t%) & zeile1%)) > 10 Then
Range(Chr$(t%) & zeile1%).Select
Selection.ClearComments
Range(Chr$(t%) & zeile1%).AddComment
Range(Chr$(t%) & zeile1%).Comment.Visible = False
Range(Chr$(t%) & zeile1%).Comment.Text Text:="" + Range(Chr$(t%) & zeile1%)
End If
Next t1%
Next t%
End Sub

gruss nighty

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: