Anzeige
Archiv - Navigation
1456to1460
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
Inhaltsverzeichnis

Offset als Range

Offset als Range
11.11.2015 14:14:16
DanielMa
Hallo liebes Forum,
ich bin bei folgender Aufgabenstellung:
Ich lasse den Wert der angewählten Zelle auslesen. Dieser wird in einer Tabelle eines anderen Tabellenblattes gesucht.
Wird er gefunden, so müssen die acht danebenstehenden Felder kopiert werden und an einer anderen Stelle eingefügt werden.
Mein Problem liegt an dem Punkt, an dem ich angeben muss, was kopiert wird.
Ich dachte da an die Offsetfunktion, bei der ich eine Range von Offset(0,1) bis (0,8) angebe, ausgehend von dem gefundenen Wert.
Mein bisheriger Code:
Sub Historie()
Dim wert As Variant
wert = ActiveCell
If IsNumeric(wert) Then
With Worksheets("Historie").Range("B63:B90")
Set c = .Find(wert, LookIn:=xlValues)
'kann man mit folgenden Zeilen etwas anfangen?
'c.Address.Offset(0, 1)
'c.Address.Offset(0, 8)
'.Range........Copy
.Range("B59:J59").PasteSpecial xlPasteValuesAndNumberFormats
End With
Else
Exit Sub
End If
End Sub
Vielen Dank im Voraus :)
Liebe Grüße,
Daniel

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Offset als Range
11.11.2015 14:19:22
Sepp
Hallo Daniel,
Sub Historie()
Dim rng As Range
Dim wert As Variant

wert = ActiveCell

If IsNumeric(wert) Then
  With Worksheets("Historie")
    Set rng = .Range("B63:B90").Find(wert, LookIn:=xlValues)
    If Not rng Is Nothing Then
      rng.Resize(1, 9).Copy
      .Range("B59").PasteSpecial xlPasteValuesAndNumberFormats
    End If
  End With
End If

Set rng = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Offset als Range - Closed
11.11.2015 14:25:20
DanielMa
Super Sepp,
danke für die schnelle und passende Lösung. Wieder etwas dazugelernt.
Gruß,
Daniel

AW: Offset als Range
11.11.2015 14:51:59
Daniel
Hi
geht auch mit Offset:
Range(c.offset(0, 1), c.offset(0, 8)).copy
das schon gezeigte Resize ist natürlich eleganter.
wenn die Zelle c selbst nicht mitkopiert werden soll, muss man Offset und Resize kombinieren:
c.offset(0, 1).Resize(, 8).Copy
wenn man den Zellbereich 1:1 kopieren will, sollte man beim Einfügen (.PasteSpecial) immer nur die linke obere Zelle des Zielbereichs angeben, das reicht dann aus.
die vollständige Eingabe des Zielbereichs mit Zelle-Oben-Links / Zelle-unten-Rechts ist nur erforderlich, wenn die Quelldaten vervielfacht werden sollen.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige