Live-Forum - Die aktuellen Beiträge
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 Abhängig Makro ausführen

If Abhängig Makro ausführen
02.08.2017 11:49:27
matt
Hallo lieber Forumsmitglieder,
Ich beiß mir hier schon seit längerem die Zähne aus:
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.
Es wäre echt super wenn du mir da ein wenig auf die Beine helfen kannst.
Vielen Dank und Gruß
matt

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

Betreff
Datum
Anwender
Anzeige
AW: If Abhängig Makro ausführen
04.08.2017 07:58:19
fcs
Hallo Matt,
hier mal ein erster Versuch, den Ablauf im Makro anders zu steuern.
https://www.herber.de/bbs/user/115213.xlsm
Um den Ablauf zu steuern wird in Zelle C1 per Formel der Berichtstyp des in D4 gewählten Produkts angezeigt.
Wenn du in Spalte D Produkte mit unterschiedlichnen Berichtstypen auswählen möchtest, dann musst du für "Druckwiderstand" ein separates Diagramm anlegen und die Makros für die Anzeige der Diagramme müssen nochmals angepasst werden.
Gruß
Franz
AW: If Abhängig Makro ausführen
04.08.2017 12:05:07
matt
Hallo Franz,
danke für die Antwort. Folgende Abfrage ist also nicht möglich:
Wenn bei dem ausgewählten Arbeitsblatt in der Spalte D4 bis DXX in A1 "Luftleistung" steht dann wähle die Daten aus E8 bis F15
Wenn bei dem ausgewählten Arbeitsblatt in der Spalte D4 bis DXX in A1 "Druckwiderstand" steht dann wähle die Daten aus F10 bis G21
?
Es ist zwingend notwendig dass beide Kurven in einem Diagramm sind, da gerade der Schnittpunkt aus der Kurve Druckwiderstand und Luftleistug die relevante Größe ergibt...
Danke schon mal
Grüße
Martin
Anzeige
AW: If Abhängig Makro ausführen
04.08.2017 13:16:38
fcs
Hallo Martin,
wenn die Werte aus den beiden Berichtsformen überlagert werden sollen, dannn muss die Struktur der Makros komplett umgestrickt werden.
Außer den Makros zur Drop-Down-Aktualisierung ist alles geändert.
Gruß
Franz
Option Explicit
Dim blnAusfuehren As Boolean '###Deklaration### Boolean ist true oder false Datentyp
Dim lngLetzte As Long 'Long hat 4 Bytes
Sub DiaAktualisieren(ByVal strTabelle As String)
Dim objChart As ChartObject
Dim strTypBericht As String
Dim lngReihen As Long
'Alle Datereihen in den Diagrammen löschen
For Each objChart In ActiveSheet.ChartObjects
With objChart.Chart
For lngReihen = .SeriesCollection.Count To 1 Step -1
objChart.Chart.SeriesCollection(lngReihen).Delete
Next lngReihen
End With
Next
'in Spalte D ausgewählte Tabellenblätter ab Zeile 4 abarbeiten
lngReihen = 4
Do
If Cells(lngReihen, 4) = "" Then Exit Do 'keine weiteren Tabellen vorhanden
strTabelle = Cells(lngReihen, 4).Value
'Name Tabellenblatt prüfen
Select Case strTabelle
Case "Tab AXYZ", "Tab ABCZ"
'Falls eine Auswahl getroffen ist _
aber kein Diagramm gezeigt werden soll können hier Blattnamen stehen
Case Else
strTypBericht = Worksheets(strTabelle).Range("A1").Text
'Typ des Berichtes Vergleichen
Select Case strTypBericht
Case "Prüfbericht Luftleistung"
Call Dia_Luftleistung(strTabelle:=strTabelle)
Case "Prüfbericht Druckwiderstand"
Call Dia_Druckwiderstand(strTabelle:=strTabelle)
Case "" 'Blatt "keine Auswahl"
'do nothing
Case Else
MsgBox "für Berichtsart """ & strTypBericht _
& """ gibt es keine Diagrammdarstellung!" _
& vbLf & vbLf _
& "ggf. zusätzliche Case-Anweisung im Makro einfügen.", _
vbOKOnly, "Anpaasen Daten Diagramm"
End Select
End Select
lngReihen = lngReihen + 1
Loop
End Sub
Sub Dia_Luftleistung(ByVal strTabelle As String)
Dim objChart As ChartObject
For Each objChart In ActiveSheet.ChartObjects
Select Case objChart.Name 'In Anführungszeichen steht der Namme des Diagramm
'strBereichY_Werte definiert hierzu die y-Werte
'strBereichX_Werte definiert hierzu die Werte der X-Achse
Case "FCD"
Call Dia_Datenzuweisen(objChart.Chart, strTabelle, _
strBereichY_Werte:="E8:E32", _
strBereichX_Werte:="F8:F32")
Case "FDE"
Call Dia_Datenzuweisen(objChart.Chart, strTabelle, _
strBereichY_Werte:="H8:H32", _
strBereichX_Werte:="F8:F32")
Case "Leistung"
Call Dia_Datenzuweisen(objChart.Chart, strTabelle, _
strBereichY_Werte:="G8:G32", _
strBereichX_Werte:="F8:F32")
Case "Arbeitspunkt"
Call Dia_Datenzuweisen(objChart.Chart, strTabelle, _
strBereichY_Werte:="J8:J32", _
strBereichX_Werte:="F8:F32")
End Select
Next objChart
End Sub
Sub Dia_Druckwiderstand(ByVal strTabelle As String)
Dim objChart As ChartObject
For Each objChart In ActiveSheet.ChartObjects
Select Case objChart.Name 'In Anführungszeichen steht der Namme des Diagramm
'strBereichY_Werte definiert hierzu die y-Werte
'strBereichX_Werte definiert hierzu die Werte der X-Achse
Case "FCD"
Call Dia_Datenzuweisen(objChart.Chart, strTabelle, _
strBereichY_Werte:="F15:F29", _
strBereichX_Werte:="E15:E29")
Case "FDE", "Leistung", "Arbeitspunkt"
End Select
Next objChart
End Sub
Sub Dia_Datenzuweisen(objChart As Chart, ByVal strTabelle, _
ByVal strBereichY_Werte As String, _
ByVal strBereichX_Werte As String)
With objChart
'Datenreihe mit Daten aus Blatt erstellen
With .SeriesCollection.NewSeries
.XValues = Worksheets(strTabelle).Range(strBereichX_Werte)
.Values = Worksheets(strTabelle).Range(strBereichY_Werte)
If strTabelle = "keine Auswahl" Then
.Name = ""
Else
.Name = strTabelle
End If
End With
End With
End Sub
'####  Ereigbis-Makros   ####
Private Sub DropDown_aktualisieren()
Dim RNG As Range, WS, Z, strFilter As String
On Error GoTo Fehler
Set RNG = Range("D4:D360")
Me.Unprotect
Application.EnableEvents = False
strFilter = ""
For Each WS In ActiveWorkbook.Sheets
Select Case WS.Name
Case Me.Name, "Listenfeed"
'Diese Blätter nicht ins DropDown
Case Me.Name, "Übersicht"
Case Else
If Application.WorksheetFunction.CountIf(RNG, WS.Name) = 0 Then
strFilter = strFilter & WS.Name & ","
End If
End Select
Next
If strFilter  "" Then
With RNG.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=strFilter
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
Else 'Es sind bereits alle Produkte ausgewählt
With RNG.Validation
.Delete
End With
MsgBox "Es sind bereits alle Produkte ausgewählt"
End If
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
Me.Protect
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Activate() 'Immer wenn das Arbeitsblatt ausgewählt wird, _
wird auch die Dropdown Liste aktualisiert
Call DropDown_aktualisieren
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Weiter
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 4)), _
Cells(Rows.Count, 4).End(xlUp).Row, Rows.Count)
If blnAusfuehren = False Then
Me.Unprotect                        'Blattschutz aufheben
Application.EnableEvents = False
If Not Intersect(Target, Columns(4).SpecialCells(xlCellTypeAllValidation)) _
Is Nothing Then
If Target.Cells.Count = 1 Then
Call DiaAktualisieren(strTabelle:=Target.Text)
End If
End If
Weiter: 'hier weiter, wenn bereits alle Blätter im Diagramm angezeigt werden.
Me.Protect                          'Blattschutz setzen
Application.EnableEvents = True
Call DropDown_aktualisieren
End If
If Not Intersect(Target, Range("D4:D300")) Is Nothing Then
If Target.Range("A1").Value  "" And Target.Cells.Count = 1 Then '

Anzeige
AW: If Abhängig Makro ausführen
04.08.2017 14:06:29
matt
Wow! Vielen Dank für deine Mühen schon mal.
Ich bekomm es leider noch nicht zum laufen. Wenn ich deinen Code einfüge und dann 7m oder Dro auswähle (Prüfbericht Druckwiderstand) wird trotzdem der gleiche Datenbereich wie bei Produkt 1 und Produkt 2 (Prüfbericht Luftwiederstand) verwendet.
Hast du denn die Datei schon mal ausprobiert?
Vielen lieben Dank
AW: If Abhängig Makro ausführen
05.08.2017 01:39:43
fcs
Hallo Martin,
Hast du denn die Datei schon mal ausprobiert?

Glaubst ein so komplexes Makro bekommt man funktionsfähig programmiert ohne es zu testen?
Hier deine Datei mit den neuen Makros, ich konnte sie heute mittag ortsbedingtnicht hochladen.

Die Datei https://www.herber.de/bbs/user/115247.xlsm wurde aus Datenschutzgründen gelöscht


Gruß
Franz
Anzeige
AW: If Abhängig Makro ausführen
05.08.2017 06:39:32
matt
Wow Franz vielen Dank! Ich werde es am Montag gleich mal an der Masterdatei auch ausprobieren. Daneschön und Grüße

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige