22.02.2019, 15:05
(Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2019, 15:05 von Hannes_Ulbricht.)
Hallo Allerseits!
ich bin neu hier und in der VBA-Welt. Auf gute Zusammenarbeit!
*Seite=Sheet/Blatt in diesem Zusammenhang, sämtliche Angaben in ein und der selben Mappe (workbook)
Ich sitze über einem Makro, dass wie folgend funktionieren soll:
Eine Maschine gibt für jeden Durchlauf Excel-Tabellen mit Prozesswerten aus, die gemessen werden.
Diese sollen automatisiert aufbereitet werden, sodass qualitative Aussagen zügig getroffen werden können.
1) Seite 1: Visualisierung von gefilterten relevanten Werten in einer Tabelle und ein Diagramm
2) Seite 2: mein temporärer Zwischenspeicher für das betrachtete Profil der Maschine; also hier soll von der betrachteten Seite alles hinkopiert werden.
3) folgende Seiten: die Roh-Daten.
ich habe das jetzt einigermaßen bewältigt, hänge aber noch beim Kopieren; irgendwie kopiert mein Makro immer die gleiche Seite (?);
wahrscheinlich ein Fehler mit dem "aktivieren" der Seiten. Ich habe gelesen, man soll activesheet eh vermeiden, aber manchmal geht das nur sehr umständlich...
Arbeitsmappe/Workbook:
Private Sub Workbook_Open()
'1)überprüfe existierende Worksheets
Dim Mainworkbook As Workbook
Set Mainworkbook = ActiveWorkbook
'Print Mainworkbook.Sheets.Count
For Z = 1 To Mainworkbook.Sheets.Count
Mainworkbook.Sheets("Auswertung").Range("I" & Z) = Mainworkbook.Sheets(Z).Name
Next Z
'funktioniert
Y = Mainworkbook.Sheets.Count - 2
MsgBox "Es wurden " & Y & " Ofenprofile erfasst.", vbOKOnly, "Erfasste Ofenprofile"
Tabelle2.Anzeigeauswahl.Clear
Tabelle2.Anzeigeauswahl.Value = ""
With Tabelle2.Anzeigeauswahl 'erfasst dynamisch die eingefügten Tabellen
For L = 1 To Y
.AddItem Mainworkbook.Sheets(L + 2).Name
Next L
End With
End Sub
Sheet1/Blatt1:
Private Sub Anzeigeauswahl_Change()
Dim ZeilenAnzahl As Long
Dim Anzeigeauswahl As String
Dim Mainworkbook As Workbook
Dim ProfilName As String
Dim rng1 As Range
Dim rng2 As Range
Set Mainworkbook = ActiveWorkbook
Anzeigeauswahl = Me.Anzeigeauswahl.Text
Application.ActiveSheet.Range("G4").Select
ActiveCell.Value = Anzeigeauswahl
Worksheets(1).Activate
MsgBox "Dieses Profil ist derzeit ausgewählt: " & Anzeigeauswahl, vbOKOnly, "Profilauswahl"
'----------------------------------------------------
Select Case Ofenprofilsetzen
'Lade Ofenprofil 3 Tabelle 4 12-58
Case Anzeigeauswahl = Worksheets(3).Name 'Abfrage ob das gewählte Profil einer Seite entspricht
Worksheets(3).Activate 'Ursprungsseite öffnen und wählen
ActiveSheet.Range("A1:T920").Copy 'Kopieren der Matrix
Worksheets(2).Activate 'Wählt Blatt fürs Ziel
Worksheets(2).Range("A1").Select 'Auswahl der Zielzelle
ActiveSheet.Paste 'Einfügen der Rohdaten auf Analyseseite
Application.CutCopyMode = False 'löscht Zwischenablage und Markierung
'Worksheets(1).Activate
dann wiederhole ich diese Angabe bis 20 mit geändertem Index. Der Grund, dass ich den Index und nicht den expliziten Namen oder Codenamen des Sheets nehme ist, dass ich automatisch eingefügte Rohdatenblätter mit eignenen Namen (Zeitdatum) benutzen können möchte. Den späteren Teil muss ich noch beenden.
'Fehlerabfang
Case Else
MsgBox "Ofenprofil nicht erfasst. Entweder mehr als 20 Profile; erweitern mit Copy-Paste und Index anpassen.", vbOKOnly, "Fehler bei Profilerfassung"
End Select
'----------------------------------------------
'Übergabe der Paramter
(hier hab ich was gelöscht was in diesem Zusammenhang nicht relevant ist)
Wie bereits erwähnt, was beim testen tatsächlich passiert ist, dass egal welche Seite in meiner Combobox (Kombinationsfeld, siehe oben) ausgewählt wird, immer Seite 3 in Seite 2 reinkopiert wird. Möglicherweise liegt der Fehler in der Art und Weise, wie ich bei CASE die Bedingung abgleiche; oder aber in der Art und Weise, wie kopiert wird mit Auswählen. Das Kopieren selbst findet statt.
Vielen vielen Dank für Anregungen!
ich bin neu hier und in der VBA-Welt. Auf gute Zusammenarbeit!
*Seite=Sheet/Blatt in diesem Zusammenhang, sämtliche Angaben in ein und der selben Mappe (workbook)
Ich sitze über einem Makro, dass wie folgend funktionieren soll:
Eine Maschine gibt für jeden Durchlauf Excel-Tabellen mit Prozesswerten aus, die gemessen werden.
Diese sollen automatisiert aufbereitet werden, sodass qualitative Aussagen zügig getroffen werden können.
1) Seite 1: Visualisierung von gefilterten relevanten Werten in einer Tabelle und ein Diagramm
2) Seite 2: mein temporärer Zwischenspeicher für das betrachtete Profil der Maschine; also hier soll von der betrachteten Seite alles hinkopiert werden.
3) folgende Seiten: die Roh-Daten.
ich habe das jetzt einigermaßen bewältigt, hänge aber noch beim Kopieren; irgendwie kopiert mein Makro immer die gleiche Seite (?);
wahrscheinlich ein Fehler mit dem "aktivieren" der Seiten. Ich habe gelesen, man soll activesheet eh vermeiden, aber manchmal geht das nur sehr umständlich...
Arbeitsmappe/Workbook:
Private Sub Workbook_Open()
'1)überprüfe existierende Worksheets
Dim Mainworkbook As Workbook
Set Mainworkbook = ActiveWorkbook
'Print Mainworkbook.Sheets.Count
For Z = 1 To Mainworkbook.Sheets.Count
Mainworkbook.Sheets("Auswertung").Range("I" & Z) = Mainworkbook.Sheets(Z).Name
Next Z
'funktioniert
Y = Mainworkbook.Sheets.Count - 2
MsgBox "Es wurden " & Y & " Ofenprofile erfasst.", vbOKOnly, "Erfasste Ofenprofile"
Tabelle2.Anzeigeauswahl.Clear
Tabelle2.Anzeigeauswahl.Value = ""
With Tabelle2.Anzeigeauswahl 'erfasst dynamisch die eingefügten Tabellen
For L = 1 To Y
.AddItem Mainworkbook.Sheets(L + 2).Name
Next L
End With
End Sub
Sheet1/Blatt1:
Private Sub Anzeigeauswahl_Change()
Dim ZeilenAnzahl As Long
Dim Anzeigeauswahl As String
Dim Mainworkbook As Workbook
Dim ProfilName As String
Dim rng1 As Range
Dim rng2 As Range
Set Mainworkbook = ActiveWorkbook
Anzeigeauswahl = Me.Anzeigeauswahl.Text
Application.ActiveSheet.Range("G4").Select
ActiveCell.Value = Anzeigeauswahl
Worksheets(1).Activate
MsgBox "Dieses Profil ist derzeit ausgewählt: " & Anzeigeauswahl, vbOKOnly, "Profilauswahl"
'----------------------------------------------------
Select Case Ofenprofilsetzen
'Lade Ofenprofil 3 Tabelle 4 12-58
Case Anzeigeauswahl = Worksheets(3).Name 'Abfrage ob das gewählte Profil einer Seite entspricht
Worksheets(3).Activate 'Ursprungsseite öffnen und wählen
ActiveSheet.Range("A1:T920").Copy 'Kopieren der Matrix
Worksheets(2).Activate 'Wählt Blatt fürs Ziel
Worksheets(2).Range("A1").Select 'Auswahl der Zielzelle
ActiveSheet.Paste 'Einfügen der Rohdaten auf Analyseseite
Application.CutCopyMode = False 'löscht Zwischenablage und Markierung
'Worksheets(1).Activate
dann wiederhole ich diese Angabe bis 20 mit geändertem Index. Der Grund, dass ich den Index und nicht den expliziten Namen oder Codenamen des Sheets nehme ist, dass ich automatisch eingefügte Rohdatenblätter mit eignenen Namen (Zeitdatum) benutzen können möchte. Den späteren Teil muss ich noch beenden.
'Fehlerabfang
Case Else
MsgBox "Ofenprofil nicht erfasst. Entweder mehr als 20 Profile; erweitern mit Copy-Paste und Index anpassen.", vbOKOnly, "Fehler bei Profilerfassung"
End Select
'----------------------------------------------
'Übergabe der Paramter
(hier hab ich was gelöscht was in diesem Zusammenhang nicht relevant ist)
Wie bereits erwähnt, was beim testen tatsächlich passiert ist, dass egal welche Seite in meiner Combobox (Kombinationsfeld, siehe oben) ausgewählt wird, immer Seite 3 in Seite 2 reinkopiert wird. Möglicherweise liegt der Fehler in der Art und Weise, wie ich bei CASE die Bedingung abgleiche; oder aber in der Art und Weise, wie kopiert wird mit Auswählen. Das Kopieren selbst findet statt.
Vielen vielen Dank für Anregungen!