Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

aufgezeichnetes Makro in allen Tabellenblättern au

aufgezeichnetes Makro in allen Tabellenblättern au
01.06.2008 21:36:00
Jörg
Hallo zusammen,
als VBA Neuling muss ich umfangreiche Messdaten aufbereiten. Diese sind in .txt Files hinterlegt. Alle Files in einem Ordner sollen in einer Arbeitsmappe abgelegt werden, wobei jedes File in einem eigenen Arbeitsblatt landen soll. Für diese Funktion habe ich hier bereits eine entsprechende Lösung gefunden.
Nun soll aus für jedes Arbeitsblatt der Mittelwert und die Standardabweichung sowie ein Diagramm der Daten erstellt werden. Dies habe ich nun mittels Makrorekorder einmal aufgezeichnet. Wie muss ich das makro anpassen, damit es für alle Arbeitsblätter der Mappe unabhängig von deren Namen durchgeführt wird?

Sub Diagramm()
' Diagramm Makro
' Makro am 28.05.2008 von Jörg User aufgezeichnet
Sheets("1400").Select
Rows("101:400").Select
Selection.ClearContents
Range("A111").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(R[-110]C:R[-11]C)"
Range("A111").Select
Selection.Copy
Range("B111:AF111").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=9
Range("A111:AF111").Select
Application.CutCopyMode = False
Range("A113").Select
ActiveCell.FormulaR1C1 = "=STDEV(R[-112]C:R[-13]C)"
Range("A113").Select
Selection.Copy
Range("B113:AF113").Select
ActiveSheet.Paste
Range("AG90").Select
Application.CutCopyMode = False
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets("1400").Range("O1:O100"), PlotBy:= _
xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="1400"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Anzahl Scans"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Entfernung [mm]"
End With
ActiveChart.HasLegend = False
ActiveChart.HasDataTable = False
ActiveSheet.Shapes("Diagramm 1").ScaleWidth 1.23, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Diagramm 1").ScaleHeight 1.24, msoFalse, _
msoScaleFromTopLeft
ActiveChart.Axes(xlCategory).Select
Windows("080528_Papier_Fir_7_2.xls").SmallScroll Down:=12
End Sub


Danke schon mal für eure hilfe,
Gruss Jörg

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: aufgezeichnetes Makro in allen Tabellenblätter
01.06.2008 23:53:00
fcs
Hallo Jörg,
mit folgenden Anpassungen erstekkt das Makro die Formeln und das Diagramm im jeweils aktuellen Tabellen-Blatt.
Gruß
Franz

Sub Diagramm()
' Diagramm Makro
' Makro am 28.05.2008 von Jörg User aufgezeichnet
Dim wks As Worksheet
Set wks = ActiveSheet
With wks
.Rows("101:400").ClearContents
.Range("A111").FormulaR1C1 = "=AVERAGE(R[-110]C:R[-11]C)"
.Range("A111").Copy Destination:=.Range("B111:AF111")
Application.CutCopyMode = False
.Range("A113").FormulaR1C1 = "=STDEV(R[-112]C:R[-13]C)"
.Range("A113").Copy Destination:=.Range("B113:AF113")
Application.CutCopyMode = False
.Range("AG90").Select
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=.Range("O1:O100"), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:=.Name
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Anzahl Scans"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Entfernung [mm]"
End With
ActiveChart.HasLegend = False
ActiveChart.HasDataTable = False
.Shapes(1).ScaleWidth 1.23, msoFalse, msoScaleFromTopLeft
.Shapes(1).ScaleHeight 1.24, msoFalse, msoScaleFromTopLeft
End With
End Sub


Anzeige
AW: aufgezeichnetes Makro in allen Tabellenblättern au
02.06.2008 00:03:00
Josef
Hallo Jörg,
probier mal.
Sub Diagramm()
Dim objWS As Worksheet, objChart As Chart

For Each objWS In ThisWorkbook.Worksheets
    With objWS
        .Range(.Cells(101, 1), .Cells(.Rows.Count, .Columns.Count)).ClearContents
        .Range("A111:AF111").FormulaR1C1 = "=AVERAGE(R[-110]C:R[-11]C)"
        .Range("A113:AF113").FormulaR1C1 = "=STDEV(R[-112]C:R[-13]C)"
        On Error Resume Next
        .ChartObjects(1).Delete
        On Error GoTo 0
    End With
    Set objChart = Charts.Add
    With objChart
        .ChartType = xlLineMarkers
        .SetSourceData Source:=objWS.Range("O1:O100"), PlotBy:=xlColumns
        .HasTitle = False
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Anzahl Scans"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Entfernung [mm]"
        .HasLegend = False
        .HasDataTable = False
        .Location Where:=xlLocationAsObject, Name:=objWS.Name
    End With
    With objWS
        .Shapes(1).ScaleWidth 1.23, msoFalse, msoScaleFromTopLeft
        .Shapes(1).ScaleHeight 1.24, msoFalse, msoScaleFromTopLeft
        .Shapes(1).Top = .Range("AG90").Top
        .Shapes(1).Left = .Range("AG90").Left
    End With
Next
End Sub


Gruß Sepp



Anzeige
AW: aufgezeichnetes Makro in allen Tabellenblättern au
02.06.2008 09:27:54
Jörg
Hallo Sepp,
danke für deine Hilfe. Es funktioniert fast perfekt, allerdings mit einer Ausnahme:
Die Berechnung des Mittelwertes und der Standardabw. ergibt eine DIV/0, da er nach Ausführung des Makros den Zellen folgenden Bezug zuweist:
z.B. A111: =MITTELWERT(A65427:A65526)
und für A113: =STABW(A65425:A65524)
Hast du noch eine Idee, woran dies liegen könnte?
Gruss Jörg

AW: aufgezeichnetes Makro in allen Tabellenblättern au
02.06.2008 11:03:28
fcs
Hallo Jörg,
ich hab die Zeilen bei mir getestet:
Ergebnis:
Formel A111: =MITTELWERT(A1:A100)
Formel A113: =STABW(A1:A100)
Die von dir angegebenen Zellbereiche ergeben sich wenn in den Zeilen

.Range("A111:AF111").FormulaR1C1 = "=AVERAGE(R[-110]C:R[-11]C)"
.Range("A113:AF113").FormulaR1C1 = "=STDEV(R[-112]C:R[-13]C)"

die negativen Werte in den eckigen Klammern geändert werden


.Range("A111:AF111").FormulaR1C1 = "=AVERAGE(R[-220]C:R[-121]C)"
.Range("A113:AF113").FormulaR1C1 = "=STDEV(R[-224]C:R[-125]C)"

Ändere ggf. die beiden CodeZeilen wie folgt, dann werden die Formeln mit absoluten Zeilenbezügen erstellt.


.Range("A111:AF111").FormulaR1C1 = "=AVERAGE(R1C:R100C)"
.Range("A113:AF113").FormulaR1C1 = "=STDEV(R1C:R100C)"

Dann:
Formel A111: =MITTELWERT(A$1:A$100)
Formel A113: =STABW(A$1:A$100)
Gruß
Franz

Anzeige
AW: aufgezeichnetes Makro in allen Tabellenblättern au
02.06.2008 12:51:53
Jörg
Hallo Franz,
vielen Dank für deine Hilfe. Seltsamerweise habe ich die geänderten Zellbereiche erhalten ohne die Werte in den Klammern zu ändern. Jedoch nur in der Lösung von Sepp, bei deiner hat es funktioniert. Da ich jedoch inzwischen eine Arbeitsmappe mit 15 Blättern habe, wollte ich das Makro nicht jedesmal einzeln ausführen und habe so erst die Lösung von Sepp getestet, die bis auf den angesprochenen Fehler prima funktioniert.
Wie dem auch sei, deine Lösung mit den absoluten Zellbezügen hat geholfen und meine Lernkurve zeigt dank euch steil nach oben:-
Gruss Jörg)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige