Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
784to788
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
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Schleifen verschachteln

Schleifen verschachteln
29.07.2006 18:14:26
Stefan
Hallo
ich hätte da gern ein Problem:
Wie kann ich mehrere Schleifen so verschachteln das folgendes ausgeführt wird:
1.Arbeitsmappe "Test"_Tabelle "Variable" von A3 - A? (immer unterschiedliche Werte)Schritt für Schritt, ab A3 die Variablen lesen....
2. Diesen Wert in Arbeitsmappe "Protokoll" in jeder Tabelle suchen und aus den gefundenen Tabellen, den Wert in Arbeitsmappe "Test" Tabelle "Auswertung" übertragen.
z.B.
Arbeitsmappe "Test"_Tabelle "Variable" A3 = Ph_2 (kann aber unterschiedlich sein)
Arbeitsmappe "Protokoll" in allen Tabellen den Wert suchen und in
Arbeitsmappe "Test" Tabelle "Auswertung" untereinander kopieren
Ich habe es geschaft die Variable in der Arbeitsmappe "Protokolle zu finden allerdings weis ich dann nicht mehr weiter a:wie kopiere ich dann den Wert in die Arbeitsmappe so das die Werte der anderen Tabellen untereinander stehn.
b: momentan sucht das makro nur solange bis der erste Wert gefunden wurde.
Wäre für Hilfe echt dankbar
Gruß
Stefan

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleifen verschachteln
29.07.2006 18:17:20
Josef
Hallo Stefan!
Zeig mal deinen bisherigen Code.
Gruß Sepp

AW: Schleifen verschachteln
30.07.2006 23:19:44
stesa
Hallo Sepp,
werde den bisherigen Code morgen einstellen.
hoffentlich kannst Du mir weiterhelfen.
Bis dann
Stefan
AW: Schleifen verschachteln
31.07.2006 21:58:02
Stefan
Hallo Sepp, Hallo VBA-Freaks,
hier der Code, ich habe heute noch ein bisschen gebastelt.
Das hier ist dabei rausgekommen:

Sub Test2()
Dim i As Integer
Dim v As String
Dim z As Integer
Workbooks("Toleranzen S2.xls").Activate
Sheets("Variablen").Select
For z = 2 To ActiveSheet.UsedRange.Rows.Count
Range("A1").Select
ActiveCell.Offset(z, 0).Select
v = ActiveCell.Value
Workbooks("Protokolle.xls").Activate
For i = 1 To ActiveWorkbook.Sheets.Count
Workbooks("Protokolle.xls").Activate
Sheets(i).Activate
Cells.Find(What:=v, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, searchorder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
On Error Resume Next
ActiveCell.Offset(0, 3).Select
ActiveCell.Copy
Workbooks("Toleranzen S2.xls").Activate
Sheets("Variablen").Select
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
Next i
Next z
End Sub

In dem Workbook "Protokolle" habe ich die eingefügten Protokolle.
Die Auswertung würde ich gern über Teilergebnis in dem Workbook "Toleranzen" machen.
Ich hab gerade versucht mal 86 Protokolle über obiges Makro einzufügen.
das hat sage und schreibe 12 min gedauert, für ca. 8000 Daten (ca 96 Variablen * 86 Werte). Ist das normal oder kann man das schneller machen. Vielleicht ist meine Methode nicht die richtige, kann man vielleicht mehrere Daten in den speicher lesen und dann in ein Tabellenblatt einfügen ? Falls ihr noch Infos braucht, bitte nachfragen.
Gruß
Stefan
Anzeige
AW: Schleifen verschachteln
31.07.2006 22:10:15
Jens
Hi,
wenn du konsequent auf select und activate verzichtest, geht wesentlich schneller.
mfg Jens
AW: Schleifen verschachteln
31.07.2006 22:24:31
Josef
Hallo Stefan!
Ungetestet!
Sub Test2()
Dim objSh As Worksheet, objShSrc As Worksheet
Dim lngLast As Long, lngR As Long
Dim rng As Range

On Error GoTo ErrExit

With Application
  .ScreenUpdating = False
  .EnableEvents = False
  .DisplayAlerts = False
  .Calculation = xlCalculationManual
  .Cursor = xlWait
End With

Set objShSrc = Workbooks("Toleranzen S2.xls").Sheets("Variablen")

With objShSrc
  
  lngLast = .Cells(Rows.Count, 1).End(xlUp).Row
  
  For lngR = 2 To lngLast
    For Each objSh In Workbooks("Protokolle.xls").Worksheets
      Set rng = objSh.Cells.Find(What:=.Cells(lngR, 1), _
        LookIn:=xlFormulas, _
        LookAt:=xlPart)
      
      If Not rng Is Nothing Then
        rng.Offset(0, 3).Copy .Cells(lngR, 2)
      End If
    Next
  Next
  
End With

ErrExit:


If Err.Number > 0 Then
  MsgBox Err.Number & vbLf & Err.Description, , "Fehler"
  Err.Clear
End If

With Application
  .ScreenUpdating = True
  .EnableEvents = True
  .DisplayAlerts = True
  .Calculation = xlCalculationAutomatic
  .Cursor = xlDefault
End With

Set objShSrc = Nothing

End Sub


Gruß Sepp

Anzeige
Korrektur!
31.07.2006 22:52:52
Josef
Hallo Stefan!
Ich hatte mehrere Fundstellen in verschiedenen Sheets nicht beachtet.
Sub Test2()
Dim objSh As Worksheet, objShSrc As Worksheet
Dim lngLast As Long, lngR As Long
Dim intC As Integer
Dim rng As Range

On Error GoTo ErrExit

With Application
  .ScreenUpdating = False
  .EnableEvents = False
  .DisplayAlerts = False
  .Calculation = xlCalculationManual
  .Cursor = xlWait
End With

Set objShSrc = Workbooks("Toleranzen S2.xls").Sheets("Variablen")

With objShSrc
  
  lngLast = .Cells(Rows.Count, 1).End(xlUp).Row
  
  For lngR = 2 To lngLast
    intC = 2
    For Each objSh In Workbooks("Protokolle.xls").Worksheets
      Set rng = objSh.Cells.Find(What:=.Cells(lngR, 1), _
        LookIn:=xlFormulas, _
        LookAt:=xlPart)
      
      If Not rng Is Nothing Then
        rng.Offset(0, 3).Copy .Cells(lngR, intC)
        intC = intC + 1
      End If
    Next
  Next
  
End With

ErrExit:


If Err.Number > 0 Then
  MsgBox Err.Number & vbLf & Err.Description, , "Fehler"
  Err.Clear
End If

With Application
  .ScreenUpdating = True
  .EnableEvents = True
  .DisplayAlerts = True
  .Calculation = xlCalculationAutomatic
  .Cursor = xlDefault
End With

Set objShSrc = Nothing

End Sub


Gruß Sepp

Anzeige
AW: Schleifen verschachteln
31.07.2006 23:23:11
Stefan
Hallo noch mal,
Dankeschön für die Antworten,
Sepp, ich hab dein Makro getestet, läuft sehr gut um um einiges schneller. Allerdings überschreibt das Makro die Werte in der Tabelle"Variable" nacheinander.Der Wert sollte aber immer eine Zelle weiter eingetragen werden.
Wenn Du mir noch sagen könntest wie das geht oder in das Makro einfügst wäre das super.
Ich muss mir morgen das ganze, gaanz langsam anschauen, da ich auf den ersten Blick nur Bahnhof verstanden habe.
Gruß
Stefan
AW: Schleifen verschachteln
31.07.2006 23:26:56
Stefan
Hallo Sepp,
sorry hab Deine Korrektur zu spät entdeckt.
Jetzt Stop ich mal die Zeit
Danke nochmals
Stefan
Anzeige
AW: Schleifen verschachteln
31.07.2006 23:39:44
Stefan
WAHNSINN Sepp,
85 Protokolle in 20sec
das ist der Hammer, jetz muss ich mir das ganze noch ausführlich zu gemüte führen.
Da kommt bestimmt noch die ein oder andere Frage.
Vielen Dank und gute Nacht
Stefan
AW: Schleifen verschachteln
31.07.2006 23:45:24
Josef
Hallo Stefan!
Freud mich das es klappt!
Wenn man vorher wüste, wie viele Fundstellen pro Suchbegriff maximal zu erwarten sind,
dann könnte man das ganze sicher nochmal beschleunigen.
Gruß Sepp

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige