Office: autoform mit einer funktion verbinden

Helfe beim Thema autoform mit einer funktion verbinden in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; servus, also ich würde gern "autoformen" von excel mit einer funktion verbinden, so dass diese "autoformen" z.B ein viereck ihre farbe automatisch... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von snopydo, 14. Februar 2009.

  1. snopydo Erfahrener User

    autoform mit einer funktion verbinden


    servus,

    also ich würde gern "autoformen" von excel mit einer funktion verbinden, so dass diese "autoformen" z.B ein viereck ihre farbe automatisch ändern können.

    bsp. eine 2 bedeutet "viereck, dreieck etc." wird rot, 23 bedeutet es wird blau

    hoffe ich konnte das problem gescheit rüberbringen :)


    vielleicht kann mir ja jemand weiterhelfen...

    vielen dank für eure bemühungen...

    greetz sascha
     
    snopydo, 14. Februar 2009
    #1
  2. miriki Erfahrener User
    Da Du mit Formeln nur die Inhalte der Zellen (genau genommen auch nur der Zellen, in denen sich die jeweilige Formel befindet) ändern kannst, wirst Du um VBA und die Shapes-Auflistung nicht herumkommen.

    Gruß, Michael
     
  3. snopydo Erfahrener User
    hallo michael,

    vielen dank für deine antwort.

    da hab ich mir das wohl einfacher vorgestellt als es wohl ist.

    bin zwar fit in tabellenkalkulation aber das geht ja schon etwas tiefer in die programmierung rein.

    ist es schwierig soetwas für mein problem zu erstellen,...bzw. gibt es sowas schon in ähnlicher form?

    oder weist du vielleicht wo man sich dazu belesen kann, weil ich weiß jetzt auch nicht so wirklich unter welchen stichworten ich da suchen kann/soll.

    ganz lieben gruß sascha
     
    snopydo, 16. Februar 2009
    #3
  4. miriki Erfahrener User

    autoform mit einer funktion verbinden

    Das kommt drauf an... ;-)

    Ich denke, ein Einklinken in das "Change" oder "Calc" Ereignis wäre der erste Ansatz, um bei Änderungen in der Arbeitsmappe irgendetwas auszuführen.

    In dem Code wäre dann die "Worksheets" Auflistung zusammen mit der "Cells" (bzw. "Cells().Value") Eigenschaft der Weg, um an die Werte heranzukommen, von denen abhängig was passieren soll.

    Und mit der "Shapes" Auflistung kommt man dann an die Objekte heran, die man verändern will. Was genau da zu tun ist, wäre dann wieder eine Einzelfall-Geschichte.

    Ganz grob könnte das so aussehen:

    * Erstelle eine neue Arbeitsmappe
    * Auf dem ersten Blatt setze eine Autoform aus der Kategorie "Sterne und Banner" namens "Explosion 1" in Zelle A1
    * Schreibe in Zelle C2 den Text "Wert:"
    * Umrande die Zelle D2 mit einer einfachen Linie

    * Wechsel mit Alt-F11 in den VBA-Editor, klicke dort im Projekt-Explorer (ggf. Strg-R drücken, falls der nicht angezeigt wird) "DieseArbeitsmappe" mit Doppelklick an
    * Im linken Dropdown über dem Source-Editor wähle "Worksheet" an - Es wird ein Ereignis "SelectionChange" erzeugt und der Cursor darin platziert
    * Im rechten Dropdown wähle "Change" aus - Neues Ereignis "Change" wird erzeugt und Cursor platziert

    Dort zwischen SUB und END SUB könnte sowas reinpassen:
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    
        Dim s As Worksheet
        Dim v As Double
        Dim c As Long
    
        Set s = ActiveSheet
    
        v = s.Cells(2, 4).Value
    
        Select Case v
            Case 0 To 25
                c = RGB(255, 0, 0)
            Case 26 To 75
                c = RGB(255, 255, 0)
            Case 76 To 100
                c = RGB(0, 255, 0)
            Case Else
                c = RGB(0, 0, 255)
        End Select
    
        s.Shapes(1).Fill.ForeColor.RGB = c
    
    End Sub
    Jetzt sollte sich die Farbe des Shape ändern, wenn in D4 ein Wert eingetragen wird.

    Gruß, Michael
     
  5. miriki Erfahrener User
    Argl, nein! nicht den, sondern "Tabelle1" anklicken!

    Gruß, Michael
     
  6. snopydo Erfahrener User
    SUPER KLASSE

    whow,......VIELEN DANK

    genauso hab ich mir das vorgestellt....echt klasse!!!!!

    und super verständlich beschrieben,... :))

    eine frage hätt ich noch,...was muss in dem code verändert werden,...so dass nur die umrandung die farbe wechselt?

    vielen lieben dank,...du hast mir echt weitergeholfen!!!!!!!!!!!!!!


    gruß sascha
     
    snopydo, 16. Februar 2009
    #6
  7. miriki Erfahrener User
    Re: SUPER KLASSE

    Da ändert sich nur der Bezug auf die Eigenschaft, deren Farbe verändert wird. Im Beispiel wird die "Fill" Farbe geändert, das läßt sich aber ohne große Probleme in die "Line" Farbe ändern:
    Code:
        s.Shapes(1).Line.ForeColor.RGB = c
    Die "ForeColor" ist die "primäre" Farbe, die bei "solid" auch die einzige ist. Möchtest Du aber gepunktet, gestrichelt oder was auch immer füllen (bei Flächen mit z.B. Raster-Muster oder "gradient" Verläufe), dann kommt noch die "BackColor" dazu.

    Die Eigenschaften, die Du an dem Shape verändern kannst, kannst Du Dir auch selbst recht simpel ansehen:

    Im VBA-Editor setz mal den Cursor auf das Wort "Shapes" und drücke F1. Du kriegst die Hilfeseite, was die Shapes-Eigenschaft ist. Klick dort im ersten Satz auf "Shapes" und Du landest beim Shapes-Auflistungsobjekt. Klickst du dort im ersten Satz auf "Shape" landest Du bei der Beschreibung des einzelnen Shape-Objekts. In der ersten Zeile ganz oben kannst Du unter "Eigenschaften" einsehen, welche Möglichkeiten du so hast. Dort findest Du auch die "Fill" oder "Line" Eigenschaft wieder.

    Gruß, Michael
     
  8. snopydo Erfahrener User

    autoform mit einer funktion verbinden

    hallo michael,

    alles wunderbar geklappt...funktioniert einwandfrei...

    jetzt hab ich doch noch ein kleines problem,...wie können mehrere shapes auf einem tabellenblatt bearbeitet werden?...hab schon versucht in der hilfe von excel mich zu belesen, aber naja, war nicht sehr erfolgsbehaftet :)

    gruß sascha
     
    snopydo, 16. Februar 2009
    #8
  9. snopydo Erfahrener User
    hey...

    hab jetzt rausgefunden, dass wenn ich unten die shapes erweitere das ich somit mehrere bearbeiten kann:

    .
    .
    .
    End Select

    s.Shapes(1).Line.ForeColor.RGB = c
    s.Shapes(2).Line.ForeColor.RGB = c
    s.Shapes(3).Line.ForeColor.RGB = c
    s.Shapes(...).Line.ForeColor.RGB = c

    jetzt noch die frage,...wie kann ich jedes von denen einzeln ansteuern,...sprich mit individuellen werten belegen,..so dass z.B das erste blau, das zweite rot ist.

    gruß sascha
     
    snopydo, 16. Februar 2009
    #9
  10. snopydo Erfahrener User
    hallo michael,...

    hab jetzt mal ein bissel rumgetüfftelt, und bin ich jetzt soweit gekomen das ich zwei shapes einzeln von einander bearbeiten kann.

    ich bin auch noch nicht dahinter gekommen, wo man deglariert welche "autoform" bearbeitet wird... hat das was mit der zahl in der klammer zu tun? [s.Shapes(1).Line.ForeColor.RGB = c]

    ist das praktikabel? was da ich da gebastelt habe?
    bitte dich mal um rat, bzw. wie kann man es vielleicht besser machen?

    gruß


    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
        
        Dim s As Worksheet
        Dim v, w As Double
        Dim c, d As Long
    
        Set s = ActiveSheet
        
      
        
        v = s.Cells(2, 4).Value
        w = s.Cells(3, 4).Value
    
        Select Case v
            Case 0 To 25
                c = RGB(255, 0, 0)
            Case 26 To 75
                c = RGB(255, 255, 0)
            Case 76 To 100
                c = RGB(0, 255, 0)
            Case Else
                c = RGB(0, 0, 255)
        End Select
        
        Select Case w
            Case 0 To 25
                d = RGB(255, 0, 0)
            Case 26 To 75
                d = RGB(255, 255, 0)
            Case 76 To 100
                d = RGB(0, 255, 0)
            Case Else
                c = RGB(0, 0, 255)
        End Select
    
        s.Shapes(1).Line.ForeColor.RGB = c
        s.Shapes(2).Line.ForeColor.RGB = d
    
    End Sub
    
    
     
  11. miriki Erfahrener User
    Na siehste, geht doch... ;-) Was so'n kleiner Schubser in Richtung Online-Hilfe doch bewirken kann... ;-)

    Btw: Wenn Du mehrere Shapes auf einmal bearbeiten willst, denen die gleichen Eigenschaften setzen willst, gibt es auch noch "ShapeRange" oder so ähnlich. Dann muß Du nicht für jedes Shape eine Zeile Source schreiben.

    Yep, genau das. "Shapes" ist eine Auflistung, ähnlich einem Array, das man mit einer Variablen baut.
    Code:
    dim werte(10) as integer
    erzeugt Dir das Array werte(1), werte(2), ... werte(10) und Du kannst jedem Element dieses Arrays einen individuellen Wert geben.
    Code:
    werte(2) = 15
    werte(7) = 83
    Und genau so verhält es sich mit den Shapes. Du kannst die Eigenschaften von Shapes(2) ganz anders setzen, als die von Shapes(7).

    Das geht und ist sicher noch zu überschauen bei 2 Shapes. Werden es mehr, würde sich hier eine For-Next-Schleifen anbieten, die auch jederzeit erweitert werden kann.

    So ganz grob in der Art, wenn es 10 Shapes wären:
    Code:
    for y=1 to 10
      v = s.cells(y+1,4).value
      [...]
      shapes(y).line.forecolor.rgb = c
    next y
    Gruß, Michael
     
  12. snopydo Erfahrener User
    hallo michael,...

    danke für deine geduld mir mir :)...


    weiß jetzt noch nicht so richtig wie du das gemeint hast, wie ich die shapes(autoformen) deglariere,...

    woher weiß excel, welcher stern auf dem arbeitsblatt zu eingabemaske "v" gehört (v = s.Cells(2, 4).Value)...bzw. wie kann ich das umdeklarieren, das zB. der 5 Stern in meinem arbeitsblatt mit der eingabemaske von "v" geändert (farbe) werden kann?


    grüße
     
  13. miriki Erfahrener User

    autoform mit einer funktion verbinden

    Das weiß Excel gar nicht. ;-) Das liegt völlig in Deiner Hand. Wenn der Wert in Zelle F4 den 7. Shape beeinflussen soll, dann machst Du das einfach und Excel wird das akzeptieren (müssen). Aber Der Source sieht dann etwas anders aus.

    So im Moment ist es einfach so, daß der 1. (oberste) Wert den 1. Shape beeinflußt bis hinunter zum 10. (untersten, letzten) Wert, der den 10. Shape beeinflußt. Wo die einzelnen Shapes auf dem Blatt positioniert sind, spielt dabei keine Rolle. Der 1. Shape kann dabei auch gerne an 7. Position in einer Reihe stehen und dabei von 3 anderen Shapes verdeckt werden.

    Das ist wie mit den Fußballspielern. Wenn der Spieler mit der Nummer 7 die gelbe Karte kriegt, ist es in dem Moment völlig egal, wo der sich gerade auf dem Platz befindet.

    Gruß, Michael
     
  14. snopydo Erfahrener User
    hallo michael...

    ...hab wohl gerade meine frage nochmal etwas besser umschrieben als du grad deinen beitrag gepostet hast... :)

    also kann man das garnicht beeinflussen...und die sterne bekommen einfach die nummer der shapes (s.Shapes(1).Line.ForeColor.RGB = c)
    zugeordnet, nach der reihenfolge wie ich sie erstelle...?

    oder anders gefragt,...kann ich den autoformen "namen" geben, die dann in dem vb code berücksichtigt werden?

    gruß
     
  15. miriki Erfahrener User
    Jup, auch das geht...

    Achte mal auf das Feld, in dem normalerweise die Position des Cursors steht. Setz mal den Cursor auf C4 und in dem weißen Feld links oben irgendwo sollte "C4" stehen.

    (Sollte da nichts zu finden sein: Ansicht - Bearbeitungsleiste)

    Jetzt markiere mal einen Shape und Du wirst sehen: Dort steht sowas wie "Autoform 1".

    Klick einfach in das Feld und vergib einen neuen Namen für den Shape.

    Im VBA kannst Du die Shapes ansprechen mit:
    Code:
    shapes(nr)
    aber auch mit
    Code:
    shapes("name")
    Hilft Dir das weiter?

    Gruß, Michael
     
Thema:

autoform mit einer funktion verbinden

Die Seite wird geladen...
  1. autoform mit einer funktion verbinden - Similar Threads - autoform funktion verbinden

  2. AutoForm formatieren

    in Microsoft Outlook Tutorials
    AutoForm formatieren: AutoForm formatieren Word 2013 Outlook 2013 Word 2010 Outlook 2010 Word 2007 Outlook 2007 Mehr... Weniger...
  3. AutoForm formatieren

    in Microsoft Word Tutorials
    AutoForm formatieren: AutoForm formatieren Word 2013 Outlook 2013 Word 2010 Outlook 2010 Word 2007 Outlook 2007 Mehr... Weniger...
  4. VBA Autoform einfärben

    in Microsoft Excel Hilfe
    VBA Autoform einfärben: Hallo zusammen, ich brauche dringend eure Hilfe. Habe schon überall nach einer Lösung gesucht, aber komme nicht zum richtigen Ergebnis. Ich habe zwei verschiedene Arbeitsblätter in meiner...
  5. Autoform Recheck in Excel mit bestimmten Farben einfärben

    in Microsoft Excel Hilfe
    Autoform Recheck in Excel mit bestimmten Farben einfärben: Hallo zusammen, ich habe ich Excel eine Autoform "Rechteck 1". Dieses möchte ich automatisch einfärben, wenn in der Zelle A5 ein bestimmter Wert steht. In diesem Fall steht da "F7" drin. Das...
  6. autoform mit einer Funtion verbinden II

    in Microsoft Excel Hilfe
    autoform mit einer Funtion verbinden II: Hallo snopydo, hallo miriki, hallo alle anderen! Ich bin neu hier. Dieser Beitrag hier ist genau das was ich suche. Leider reicht mein wissen nicht, um ihn in Programmierung umzusetzen. Auch ween...
  7. Ziehpunkte von manchen Autoformen verschwunden

    in Microsoft Word Hilfe
    Ziehpunkte von manchen Autoformen verschwunden: Hallo! Bei manchen meiner Autoformen (vor allem bei den Flussdiagramm-Formen) sind die gelben Ziehpunkte verschwunden. Ich brauche diese Formen für meine Diplomarbeit und kann sie jetzt nur...
  8. autoform automatisch einen textinhalt zuweisen

    in Microsoft Excel Hilfe
    autoform automatisch einen textinhalt zuweisen: einen schönen guten tag an alle,... ist es irgendwie möglich einer autoform (z.b. einem rechteck) automatisch einen "textinhalt" zu geben, vielleicht über eine formel oder so? also das in...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden