2017-09-19 2 views
1

Ich versuche, eine kleine Matrix von Daten aus einer Arbeitsmappe zu erhalten und sie in ThisWorkbook einzufügen, indem ich Offset von einer Zellreferenz verwende. Die Zellenreferenz ändert sich jedoch, wenn ich einen Bereich durchsuche, der nach Werten sucht. Die Variable, die ich 'WhereCell' genannt habe, enthält die Adresse des aktuell gehaltenen Wertes, und ich möchte von dem, was in WhereCell gehalten wird, abweichen. Es funktioniert, wenn ich eine Zellreferenz hart Code, zB Range ("A1"), aber mit dem Code wie es ist, bekomme ich eine 1004: Methode 'Bereich' des Objekts '_Global' fehlgeschlagen.VBA versucht, range.offset mit einer in einer benannten Variablen gehaltenen Zelladresse zu verwenden

Wie kann ich es in Offset von "WhereCell" ändern?

Sub GetFlows() 

Dim rng As Range 
Dim row As Range 
Dim cell As Range 
Dim dem1 As String 
Dim WhereCell As Range 
Dim valueRng As Range 
Dim x As Long 
Dim y As Long 

Set rng = Range("A9:A200") 

For x = 1 To rng.Rows.Count 

dem1 = rng.Cells(x).Value 

If dem1 <> "" Then 
    Set WhereCell = ThisWorkbook.ActiveSheet.Range("A9:A200").Find(dem1, lookat:=xlPart) 
    Windows("GetFilenames v2.xlsm").Activate 
    Worksheets(dem1).Range("A1").CurrentRegion.Copy 
    ThisWorkbook.ActiveSheet.Range(Range(WhereCell), Range(WhereCell).Offset(, 2)).PasteSpecial Paste:=xlPasteValues 
    'MsgBox dem1 
    'If Not WhereCell Is Nothing Then 
    'MsgBox WhereCell.Address 
    'End If 
    Else 
    ThisWorkbook.Activate 
End If 

Next x 

End Sub 
+2

Whocell ist ein Bereich, den Sie bereits nicht in 'Range() umschließen' Siehe meine Antwort hier für weitere Erklärungen: https://stackoverflow.com/questions/46302871/relationship-between-cell-and-range -in-vba-with-activecell/46303014 # 46303014 –

Antwort

3

wie diese versuchen:

WhereCell.Offset(0, 2)).PasteSpecial Paste:=xlPasteValues 

statt dessen:

ThisWorkbook.ActiveSheet.Range(Range(WhereCell), Range(WhereCell).Offset(, 2)).PasteSpec... 

Um mehr über WhereCell zu verstehen, betrachten

Debug.Print WhereCell.Parent.Name 
Debug.Print WhereCell.Parent.Parent.Name 
Debug.Print WhereCell.Address 

, nachdem er erklärt, zu schreiben. Es zeigt Ihnen sein Arbeitsblatt, den Namen der Anwendung und ihre Adresse im unmittelbaren Fenster. Somit "weiß" es sie bereits und wenn Sie versuchen, sie "neu zu deklarieren", erhalten Sie einen Fehler.

+0

Ich bekomme anscheinend nichts mit den Debug.Print-Anweisungen. In welchem ​​Format ist die Ausgabe? –

+0

@RichPrag - drücken Sie 'Strg + G' die Ausgabe wird im unmittelbaren Fenster sein. – Vityata

+0

Ah ja, danke. –

Verwandte Themen