tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
1033
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    spiiido spiiido ist offline Grünschnabel
    Registriert seit
    Jan 2012
    Beiträge
    2
    Hallo

    Ich wollte in Excel über VBA ein Balkendiagramm aufgrund einer vorhandenen Tabelle erstellen:

    Tabellendefinition:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    A-----B------C-----D-----usw
     
    1   980
     
    2     98
     
    3    111
     
    4       76
    u.s.w


    B1 = 100%

    Balkenmaximalänge = 100 Spalten für 100%, d.h. 980 = 100 Spalten

    Für die Spalten 2 bis .. soll ab Spalte 3 ein Balken dargestellt werden, der über soviele Spalten geht, wie der Wert der entsprechenden Zeile in Spalte 2 in Prozent von B1 entspricht.

    Die Farbe des Balkens soll der Farbe entsprechen, die als Interior.ColorIndex der Zelle dieser Zeile eingestellt ist, die die Zahl enthält.

    Beispiel:
    B2 = 98 entspricht 10% Balkenlänge von 100 Spalten, entspricht 10 Spalten.
    Also für Zeile 2 soll ab Spalte 3 ein Balken von 10 Spalten länge dargestellt werden.
    In der Farbe, die B2 hat.

    Das habe ich mit fogender Sub versucht:
    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    Sub Balken(ByVal n100Proz As Integer, ByVal nAktProz As Integer)
     
     On Error GoTo Err_Balken
     
     Dim tCellAdr As String
     Dim iBalkenLaenge As Integer
     Dim nZeile As Long
     Dim nSpalte As Long
     
     tCellAdr = ActiveCell.Address   ' $Spalte$Zeile
     iBalkenLaenge = Int(100 / n100Proz * nAktProz)
     nZeile = CInt(Mid$(tCellAdr, 4, Len(tCellAdr) - 3))
     
     For nSpalte = 3 To 3 + iBalkenLaenge
        Cells(nZeile, nSpalte).Interior.ColorIndex = Cells(nZeile, 2).Interior.ColorIndex
     Next nSpalte
     Exit Sub
     
    Err_Balken:
      MsgBox Err.Number & " " & Err.Description
     
    End Sub

    In der Zelle C2 steht: =Balken(A2;B2)


    Leider funktioniert das so nicht!

    Wenn ich aber während der Programmausführung im Direktfenster foglendes Eingebe:
    Cells(nZeile, nSpalte).Interior.ColorIndex = Cells(nZeile, 2).Interior.ColorIndex

    während auf genau dieser Zeile in der Sub Balken ein Haltepunkt steht, funktioniert die Ausführung der Anweisung und die entsprechende Zelle in der Tabelle wir mit der korrekten Farbe hinterlegt.

    Wo ist der Fehler?

    Was mache ich falsch?

    Für weiterführende Hinweise bin ich dankbar.
    Geändert von ComFreek (05.01.12 um 16:28 Uhr) Grund: [vb]- und [code]-Tags hinzugefügt
     

  2. #2
    Zvoni Zvoni ist offline Mitglied Platin
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    735
    Ein Makro muss von extern getriggert werden.

    Es wäre mir neu, dass man eine Makro-Funktion per Aufruf in einer Zelle auslösen kann.

    Du musst das Change-Event verwenden.

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    Private Sub Worksheet_Change(ByVal Target As Range)
     
         'Me.Cells(1,2) ist B1, Target.Value ist die Zelle in B, die geändert wurde. Die If-Abfrage nimmt nur Werte aus Spalte B (Column=2)
     
         if Target.Column=2 then
     
               Call Balken (Me.Cells(1,2), Target.Value)
     
        End if
     
    End Sub
     
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

  3. #3
    spiiido spiiido ist offline Grünschnabel
    Registriert seit
    Jan 2012
    Beiträge
    2
    Hallo Zvoni

    Vielen Dank.
    Dein Hinweis hat mir sehr gut weiter geholfen
     

  4. #4
    Zvoni Zvoni ist offline Mitglied Platin
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    735
    Ich muss mir gerade selbst widersprechen: Der Aufruf einer VBA-Funktion aus Excel in einer Zelle heraus ist doch möglich, jedoch muss genannte Funktion als Public in einem Standard-Modul deklariert sein.

    Dann kann man es wie eine beliebige Excel-Funktion in einer Zelle "=MeineFunktion(Zahl1, Zahl2)" verwenden.

    Nur so für diejenigen die es interessiert.
     
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

Ähnliche Themen

  1. » Sonstiges Outlook 2010 - Hotmail Fehler
    Von smyle im Forum Office-Anwendungen
    Antworten: 1
    Letzter Beitrag: 24.03.11, 11:40
  2. Fehler in VS 2010?
    Von Aj2010 im Forum .NET Café
    Antworten: 6
    Letzter Beitrag: 10.01.11, 08:25
  3. [C] Fehler C2143 in VS 2010 Express
    Von brunlorenz im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 28.06.10, 11:53
  4. Fehler 1004 bei Division
    Von sheaven im Forum Visual Basic 6.0
    Antworten: 8
    Letzter Beitrag: 05.07.05, 19:43
  5. Anwendungs- oder objektdefinierter Fehler
    Von Oliver I Koeller im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 23.07.04, 21:58

Stichworte