1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Excel-Zellformat

Discussion in 'Office-Programme' started by Pharaonin, Feb 21, 2008.

Thread Status:
Not open for further replies.
  1. Pharaonin

    Pharaonin Byte

    Hallo.

    ich möchte in einer Excel Tabelle, das in einigen Zellen der eingegebene Text in einer bestimmten Art dargestellt wird (mit einer X anzahl an Leerzeichen z.B.) man den Text aber trotzdem normal eingeben kann.

    z.B.
    Eingabe:
    Hallo

    Anzeige:
    H a l l o

    für Zahlen habe ich das schon hinbekommen nur das will bei mir nicht recht funktionieren.

    Weis da wer weiter?
    Danke im vorraus

    Gruß
    Phara
     
  2. Raymann

    Raymann ROM

    Hallo, darf ich fragen, wozu dieses gut sein soll? :grübel: ich will hier nicht hochnäsig klingen, ich möchte das ganze nur besser verstehen, damit ich evt besser helfen kann. Spontan habe ich auch noch keine Lösung, vielleicht dann aber.
    Muss es unbedingt Excel sein???
     
  3. Beverly

    Beverly Halbes Megabyte

    Hi,

    mit VBA kann man das z.B. auf diese Weise machen

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim inZaehler As Integer
        Dim strWerte As String
        If Target.Count > 1 Then Exit Sub
        If Target.Column <> 1 Then Exit Sub
        Application.EnableEvents = False
        For inZaehler = 1 To Len(Target)
            strWerte = strWerte & Mid(Target, inZaehler, 1) & " "
        Next inZaehler
        Target = Left(strWerte, Len(strWerte) - 1)
        Application.EnableEvents = True
    End Sub
    
    Code bezieht sich auf Spalte A; es dürfen nicht mehrere Zellen ausgewählt sein.
     
  4. Raymann

    Raymann ROM

    Ich muss sagen - schön wenn man VBA kann - wäre dann aber gleich die nächste Frage: und wie bekommt man es dann in andere Spalten?
     
  5. Beverly

    Beverly Halbes Megabyte

    Hi,

    mit dieser Codezeile

    Code:
    If Target.Column <> 1 Then Exit Sub
    wird festgelegt, dass die Prozedur verlassen wird, falls die Eingabe nicht in Spalte A (1) erfolgt ist. Wenn es eine andere Spalte sein soll, dann einfach die 1 durch die Spaltennummer ersetzen. Sollen es mehrere Spalten sein, dann muss die Zeile durch diese ersetzt werden

    Code:
    If Intersect(Target, Union(Columns(1), Columns(3), Columns(5))) Is Nothing Then Exit Sub
    
    wobei die Zahlen in Klammern wieder die Spaltennummern sind.
     
  6. Pharaonin

    Pharaonin Byte

    Hallo.

    Ich war leider kurzzeitig verhindert.

    also:
    Der Sinn und Zwech des ganzen soll sein, das ganze an eine Grafik an zu passen. Ich habe das bis dato immer über einzelne Zellen gemacht, bekomme aber langsam ne Kriese immer jede Zelle einzeln zu bearbeiten :spinner:

    Was mich darauf kommen lässt, das es nur in einzelnen Zellen, aber nicht in einer ganzen Spalte geschehen soll.

    Kleine Frage nebenbei, da ich mich mit VBA nur in so fern auskenne, das ich Knöpfchen mit Funktionen belege: Wird diese Funktion dann immer im Hintergrund ausgeführt oder muss ich das erst in "gang bringen" wenn die Formatierung durchgeführt werden soll?
     
  7. Hascheff

    Hascheff Moderator

    Hallo,
    Da das die Prozedur "Worksheet_Change" ist, wird es nach jeder Änderung in der Tabelle ausgeführt.
    Die ersten beiden Code-Zeilen unter dim bestimmen, wann nichts passiert:
    - wenn mehrere Zellen markiert sind,
    - wenn die Spalte nicht A ist.

    Du kommst zur Prozedur "Worksheet_Change" durch Rechtsklick auf das Tabellenregister und Auswahl von "Code anzeigen". Im VBA-Fenster musst du oberhalb vom Code-Fenster in der Objektliste das Objekt "Worksheet" wählen und in der Prozedurliste dann "Change".
     
  8. Pharaonin

    Pharaonin Byte

    Hallo.

    Danke, das ist gut zu wissen.

    leider bekomme ich as mit dem code nicht so recht hin.

    ichmöchte das eingaben in zelle c5 so formatiert werden, das nach jedem geschreibenen Zeichen (wichtig ist, das er auch buchstaben nimmt) 2 leerzeichen einfügt.

    kann mir jemand den code dafür posten? ich stell mich glaube grade einfach nur zu dämlich an :confused:
     
  9. brum

    brum Kbyte

    Du kannst eigentlich das Makro von Beverly nehmen: Du musst nur statt einem Leerzeichen zwei einfügen und nach der For-Next-Schleife -2 statt -1 eingeben.

    Oder was meinst Du mit "nach jedem geschriebenen Zeichen"? Wenn nicht alle Zeichen gemeint sind musst Du noch eine If-Bedingung einfügen...

    Gruss
    Bruno
     
  10. Pharaonin

    Pharaonin Byte

    hallo.

    danke erstmal für die vielen antworten bis jetzt.

    Ich habe mal ein einfaches beispiel erstellt, evtl hilft das ja weiter ^.^

    bei mir ist es dann nur so, dass ich in einigen zellen, 1 leerzeichen zwischen jedem buchstaben und manchmal 2 dazwischen brauche.

    das problem bei der spaltenbezogenen weise ist auch, dass es in den spalten dann wiederum zellen gibt, die nicht so formatiert werden sollen.

    Gruß Phara
     

    Attached Files:

  11. Hascheff

    Hascheff Moderator

    Hallo,
    wie wäre es denn, wenn du links noch eine Hilfsspalte einfügst. Deine Formatierung würde dann in Spalte B stattfinden, Beverlys Code müsste dann abgewandelt werden.
    Code:
    If Target.Column <> 2 Then Exit Sub
    In der Hilfsspalte schreibst du eine Zahl von 0 bis 3 (bei größeren Zahlen würde ich an der Lesbarkeit zweifeln) und die For-Schleife wertet diese Zahl aus.
     
  12. Beverly

    Beverly Halbes Megabyte

    Hi,

    wenn ich das richtig interpretiere, möchtest du eigentlich das eingegebene Wort oder Zahlenkombinaiton in mehrere Spalten aufteilen? Da ich aus deiner Beispielmappe nicht entnehmen kann, welche Zellen es betrifft, hier mal der Code als Beispiel für Spalte C (kann man aber natürlich auch auf bestimmte Zellen beschränken):

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim inLaenge As Integer
        If Target.Count > 1 Then Exit Sub
        If Target.Column <> 3 Then Exit Sub
        Application.EnableEvents = False
        For inLaenge = Len(Target) To 1 Step -1
            Cells(Target.Row, 2 + inLaenge) = Mid(Target, inLaenge, 1)
        Next inLaenge
        Application.EnableEvents = True
    End Sub
    
    Mir ist aber nicht klar, weshalb du manchmal 2 Leerzeichen und manchmal nur eins benötigst - das ist aus deinem Beispiel leider nicht zu erkennen.
     
  13. Hascheff

    Hascheff Moderator

    Hallo Beverly,
    nein, das hast du falsch verstanden. Schau dir mal im Beispiel das untere "HALLO" noch mal an. Das Wort steht in einer Zelle. Die Linien dazwischen sind Autoformen.
    Apropos Autoformen: @ Pharaonin: In der Excel-Symbolleiste "Zeichnen" gibt es auch die Möglichkeit, eine WordArt einzufügen. Eien Text auf die richtige Länge zu strecken ist damit relativ einfach. Aber das musst du entscheiden, ob das für dich eine Lösung wäre.
    Stimmt, das geht aus dem Beispiel nicht hervor.
    Dass die Zahl der Leerzeichen unterschiedlich ist, liegt daran, dass entweder die Grafiken oder die Texte unterschiedlich breit sind.

    In Word wäre das kein Problem. Da habe ich einen Makro-Button, mit dem ich den Zeichenabstand in mehreren Schritten vergrößern kann.
    Aber die Eigenschaft "Selection.Font.Spacing" gibt es in (meinem) Excel-VBA nicht.
     
  14. Beverly

    Beverly Halbes Megabyte

    Hi

    doch, ich habe schon richtig erkannt wie es gemacht und wie es aussehen soll. Ich frage mich nur, wozu das gut sein soll, alles in eine Zelle zu packen, dann anschließend mittels Autoformen eine Zwischenlinie zu erstellen, obwohl die Buchstaben ja dennoch optisch jeder in einer Spalte erscheinen sollen. Das Ganze kann man schließlich viel einfacher erreichen, indem man jeden Buchstaben in eine extra Zelle schreibt - schließlich sind die Spalten in ihrer Breite ja sowieso angepasst.
     
  15. Raymann

    Raymann ROM

    Also irgendwie habe ich das Gefühl, dass du die eigentliche Sache mehr als Umständlich machen willst. Wenn du das mit einer Grafik verbinden willst, und aus dem was ich gesehen habe zwar das ganze in einer Zelle hast aber dann doch über die Breite mehrrer Spalten ziehst.

    Ich denke mal der Vorschlag mit dem WordArt ist bestimmt die bessere als hier umständlich VBAs zu bemühen die wahrscheinlich nie deinen Vorstellungen entsprechen würden. Kannst du nicht mal eine kleine Tabelle MIT der Grafik machen damit man eine Vorstellung hat was du wirklich machen willst.
     
Thread Status:
Not open for further replies.

Share This Page