Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1568to1572
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

If Schleife über Makro

If Schleife über Makro
27.07.2017 11:05:04
mad
Hallo liebe Forumsmitglieder,
ich benötige mal eure Hilfe bei folgendem Makro:
  • 
    Sub DiaAktualisieren(strTabelle As String)
    Dim lngReihen As Long
    Dim objChart As ChartObject
    Dim strBereich As String
    For Each objChart In ActiveSheet.ChartObjects
    Select Case objChart.Name               'In Anführungszeichen steht der Namme des  _
    Diagramm, strBereich definiert hierzu die y-Werte
    Case "FCD"
    strBereich = "E8:E32"
    Case "FDE"
    strBereich = "H8:H32"
    Case "Leistung"
    strBereich = "G8:G32"
    Case "Arbeitspunkt"
    strBereich = "J8:J32"
    End Select
    With objChart.Chart
    For lngReihen = .SeriesCollection.Count To 1 Step -1
    .SeriesCollection(lngReihen).Delete
    Next lngReihen
    If strTabelle  "Falls leer nötig" Then 'Falls eine Auswahl getroffen ist aber  _
    kein Diagramm gezeigt werden soll kann hier der Blattname stehen
    lngReihen = 4
    Do
    If Cells(lngReihen, 4) = "" Then Exit Do
    strTabelle = Cells(lngReihen, 4).Value
    With .SeriesCollection.NewSeries
    .XValues = Worksheets(strTabelle).Range("F8:F32")
    .Values = Worksheets(strTabelle).Range(strBereich)
    If strTabelle = "keine Auswahl" Then
    .Name = ""
    Else
    .Name = Cells(lngReihen, 4)
    End If
    End With
    lngReihen = lngReihen + 1
    Loop
    End If
    End With
    Next objChart
    End Sub
    

  • Und zwar treffe ich in einem Dropdown auf Blatt 1 eine Auswahl.
    Die Liste der auszuwählenden Dropdownmöglichkeiten entspricht den Namen der restlichen Tabellenblätter.
    Wenn ich die Auswahl getroffen habe wird in einem Diagramm auf Blatt 1 eine Kennlinie eingeblendet. Die Daten werden dann vom Blatt XY bezogen.
    Meine Anforderung ist nun folgende:
    Wenn auf dem im Dropdwon ausgewählten Blatt in "A1" = XY steht dann soll das oben gepostete Makro ausgeführt werden.
    Wenn jedoch in "A1" = ZZ steht, dann soll ein anderes Makro ausgeführt werden.
    Ist wohl schwierig zu verstehen ohne Beispieldatei. Leider besteht von meiner Hochschule Datenschutz.
    Kann mir hier jemand helfen?
    Grüße
    mad

    6
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: If Schleife über Makro
    27.07.2017 11:28:39
    Werner
    Hallo mad,
    das geht mit einem Worksheet-Change Makro. Das Makro gehört ins Codemodul des Tabellenblattes, auf dem sich dein Dropdown befindet.
    Rechtsklick auf den Tabellenblattreiter - Code anzeigen - Code rechts ins Codefenster kopieren.
    Das Makro reagiert automatisch, sobald in deinem Dropdown ein Wert geändert wird.
    Private Sub Worksheet_Change(ByVal Target As Range)
    '## Dropdown ist in Zelle C1, anpassen
    If Target.Address(0, 0) = "C1" Then
    If Not Target Is Nothing Then
    If Worksheets(Target.Value).Range("A1") = "XY" Then
    Call DeinMakro1
    ElseIf Worksheets(Target.Value).Range("A1") = "ZZ" Then
    Call DeinMakro2
    End If
    End If
    End If
    End Sub
    
    Gruß Werner
    Anzeige
    AW: If Schleife über Makro
    27.07.2017 14:13:52
    mad
    Herzlichen Dank schon mal! Mein Makro heißt ja DiaAktualisieren. Wenn ich es jetzt mit deinem Code aufrufen will kommt immer die Fehlermeldung
    Call DiaAktualisieren
    'Dieses Argument ist nicht optional'
    Weißt du was da schief läuft?
    Grüße
    mad
    AW: If Schleife über Makro
    27.07.2017 16:45:27
    Werner
    Hallo,
    so?
    Call DeinMakro1(strTabelle)
    
    Beim zweiten Makro natürlich auch.
    Gruß Werner
    AW: If Schleife über Makro
    02.08.2017 09:32:50
    mad
    Hallo Werner,
    vielen Dank für deine Antwort. Ich war leider bis heute unterwegs, sodass ich erst jetzt antworte. Ich hab mir jetzt doch mal die Mühe gemacht eine Bsp. Datei ohne sensible Daten zu erstellen:
    https://www.herber.de/bbs/user/115166.xlsm
    Und zwar kann ich im Doprdown (D4 bis DXXXXX) eine Auswahl treffen.
    Wenn in dem ausgeählten Blatt nun in Zelle A1 "Luftleistung Prüfbericht" steht, soll das Makro wie in der Datei bereits programmiert (DiaAktualisieren) ausgeführt werden. (Produkt 1 und Produkt 2 der Fall)
    Steht in der Zelle A1 jedoch "Druckwiderstand Prüfbericht" soll ein anderer Datenbereich für das Diagramm ausgewählt werden. (dro und 7m der Fall) Also ws. ein anderes Makro einfach.
    Ich hab leider noch zu wenig VBA Verständnis um das mit deiner bisherigen Hilfestellung zu lösen.
    Es wäre echt super wenn du mir da ein wenig auf die Beine helfen kannst.
    Vielen Dank und Gruß
    mad
    Anzeige
    AW: If Schleife über Makro
    27.07.2017 11:29:21
    Matthias
    Hallo
    ImPrinzip so:
    Code ins Tabellenblatt wo Du die Zelle A1 änderst.
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
    Select Case Target.Value
    Case Is = "XY"
    makro1
    Case Is = "ZZ"
    makro2
    End Select
    End If
    End Sub
    
    Steht "XY" in A1 wird makro1 ausgeführt
    Steht "ZZ" in A1 wird makro2 ausgeführt.
    Gruß Matthias
    AW: If Schleife über Makro
    27.07.2017 14:15:27
    mad
    Hmmm Danke. Das funktioniert so leider nicht weil der Nutzer die Möglichkeit hat neue Blätter anzulegen. Ich kann aber nicht verlangen dass der Nutzer dann jedes mal den Code ins jeweilige Blatt überträgt.
    Gruß
    mad
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige