Neben Spalte, deren pos wechselt, weitere Spalten einfuegen

11/01/2012 - 13:28 von Volker Neurath | Report spam
Hi zusammen,

zermartere mir seit 1h den kopf, komme aber nicht weiter:

in einem Worksheet habe ich diverse Spalten mit abrechnungstechnischen
Daten.
Eine davon ist das "DocumentDate".
Rechts neben diese Spalte möchte ich nun per VBA drei weitere Spalten
einfügen.
Das ist solnage kein problem, solange ich die Position der spalte
"DokumentDate" kenne. angenommen, die Steht in "H", dann erhalte ich das
Gewünschte mit

Range("I:K").Insert

Was aber, wenn nicht sicher ist und sein kann, dass sich "DocumentDate"
immer in Spalte H befindet?

Zu ermitteln, wo sich "DocumentDate" befindet, ist kein problem:

Set rngBDD = .Cells.Find(what:="DocumentDate")

Aber: wie gehts nun weiter?

Volker

Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.
 

Lesen sie die antworten

#1 Bernhard Sander
11/01/2012 - 15:43 | Warnen spam
Hallo Volker,

in einem Worksheet habe ich diverse Spalten mit abrechnungstechnischen Daten.
Eine davon ist das "DocumentDate".
Rechts neben diese Spalte möchte ich nun per VBA drei weitere Spalten einfügen.
Das ist solnage kein problem, solange ich die Position der spalte "DokumentDate"
kenne. angenommen, die Steht in "H", dann erhalte ich das Gewünschte mit

Range("I:K").Insert

Was aber, wenn nicht sicher ist und sein kann, dass sich "DocumentDate" immer in
Spalte H befindet?

Zu ermitteln, wo sich "DocumentDate" befindet, ist kein problem:

Set rngBDD = .Cells.Find(what:="DocumentDate")



Ausgehend von rngBDD muss ein Range ermittelt werden, der, vergleichbar deinem
Range("I:K"), die nàchsten 3 Spalten neben dem DocumentDate umfasst.

Mit Cells(..) kann man relativ zum Ausgangsbereich auf Nachbarzellen zugreifen.
So verweist rngBDD.Cells(1,2) auf die Zelle direkt neben dem DocumentDate. Die
Eigenschaft .EntireColumn umfasst die gesamte Spalte des Range.

An dem ermittelten Range wird die Methode Insert ausgeführt:

Range(rngBDD.Cells(1, 2), rngBDD.Cells(1, 4)).EntireColumn.Insert

Gruß
Bernhard Sander

Ähnliche fragen