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
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?
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
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
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
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
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
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
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
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?
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
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
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
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*
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
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
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
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

