2017-11-17 2 views
1

Ich habe zwei Hauptblätter in Excel mit anderen mehrere Blätter .. -> "Kontrollblatt" und "Zielblatt" zur Durchführung von LoopLoop-Werte in einem Blatt und Makros auf anderen Blatt mit Bereich neben dem Loop-Bereich anwenden

Kontrollblatt hat einen Bereich (in der Spalte), auf den eine Schleife angewendet werden soll, und neben dem Bereich sind Zellenverweise, die für "Zielblatt" verwendet werden.

Das Zielblatt hat eine Tabelle mit dem Namen "Hyp_table" und muss in dasselbe "Zielblatt" an einer Anzahl von Stellen eingefügt werden, deren Bezug aus der Spalte neben dem Bereich gelesen werden soll, auf dem Schleife sein soll durchgeführt auf Kontrollblatt.

Für jeden Wert in Bereich in Kontrollblatt, wenn der Wert im Bereich 1 ist, dann auf das Zielblatt, kopieren Sie die "Hyp_table", und fügen Sie es auf die vorhandene Zellennummer in der Spalte neben dem Bereich, in dem die Schleife ausgeführt wird.

Ich habe den folgenden Code verwendet, aber es funktioniert nicht:

Sub Testing() 
    Dim rng As Range, cell As Range  
    Set rng = Sheets("Control").Range("C5:C10") 

    For Each cell In rng  
     If cell = "1" Then 
      'Moving to my target sheet 
      Sheets(Sheets.Count).Select 
      ActiveSheet.Previous.Select 
      'Copying my table 
      Application.Goto "Hyp_Table" 
      Selection.Copy 

      'Selecting my cell on "Target sheet" based on value in "Control sheet" 
      ActiveSheet.Range(Sheets("Control").cell.Offset(, 1)).Select 

      'Pasting the table where the cell is selected as above 
      ActiveSheet.Paste 
      Application.CutCopyMode = False 
     Else 
     End If 
    Next cell 
End Sub 

mir jemand mit dem Code helfen.

+0

aber es funktioniert nicht –

+0

Bitte geben Sie mehr Details als "es funktioniert nicht". Was funktioniert nicht? Gibt es einen Fehler, und wenn ja, welche Zeile (n) im Code wird hervorgehoben und was ist die Fehlermeldung? Welches Ergebnis bekommst du? Welches Ergebnis hast du erwartet? – Vegard

+0

Entschuldigung dafür, dass ich zu begrenzt bin. Diese Zeile wird hervorgehoben "ActiveSheet.Range (Sheets (" Control "). Cell.Offset (, 1)). Wählen Sie" –

Antwort

2

Erste Sache zuerst - Vermeiden Sie die Verwendung von ActiveSheet, Application.GoTo und Selection. In jedem Fall. How to avoid using Select in Excel VBA

zweite Sache Sekunde - vermeiden Variablen mit Namen wie Cell und Range erklärt, weil diese Namen etwas Besonderes sind und sie von dem VBEditor verwendet werden.

Dritte Sache dritte - versuchen Sie den Code unten - es wird wahrscheinlich nicht funktionieren, weil ich nicht verstehe, was genau ist der Offset, aber es erklärt sheetName und es wird später verwendet. Es ist eine gute Praxis:

Option Explicit 

Sub Testing() 

    Dim rng   As Range 
    Dim myCell  As Range 
    Dim sheetName As String 

    Set rng = Sheets("Control").Range("C5:C10") 

    For Each myCell In rng 

     If myCell = 1 Then 

      Worksheets(Worksheets.Count - 1).Range("Hyp_Table").Copy 
      sheetName = Worksheets("Control").Cells(1, 1) 
      Worksheets(sheetName).Paste 
      Application.CutCopyMode = False 

     End If 

    Next myCell 

End Sub 
+0

Offset wird für die Auswahl einer beliebigen Zelle um die ausgewählte Zelle herum verwendet. , d. H. Offset (1,1) bedeutet, Zelle 1 Schritt auf die rechte Seite und 1 Schritt auf die ausgewählte Zelle zu wählen. Ich studierte den Code und versuchte es, aber es würde nicht funktionieren, da es mein Zielblatt nicht auswählt. –

+0

@WaryaamKhan - Ich habe eine Ahnung, was "Offset" ist, aber ich weiß nicht, was genau Sie denken, ist es - z. 'ActiveSheet.Range (Sheets (" Control "). Cell.Offset (, 1)). Wählen Sie" ist ein bisschen seltsam, so weit wie "Offset" sollte sich auf eine Zelle beziehen und Sie beziehen sich auf keine. – Vityata

+0

Ihr Kommentar funktionierte, aber wenn ich es nur dynamisch machen könnte "ActiveSheet.Range (Sheets (" Control ").Zellen (5, 3) .Offset (, 1)) .Wählen Sie " Ich muss 5 in Zelle (" 5,3 ") dynamisch, etwas wie" i + 1 ".... –

Verwandte Themen