Excel-VBA: Suchen, Markieren & Kopieren

  • #1
I

iggboert

Aktives Mitglied
Themenersteller
Dabei seit
30.01.2006
Beiträge
39
Reaktionspunkte
0
Hallihallo,

sitz mal wieder auf nem hoffentlich Problemchen....

BAP9Q.jpg

Hab eine Excel-Datei. Darin sind mehrere Tabellen. In Hauptabelle MAIN treffe ich mit Hilfe einer Gültigkeitsliste eine Auswahl (hier habe ich die Wahl zwischen: Hund, Katze und Pferd)

Nachdem ich die Wahl getroffen habe, soll das Makro die Tabelle AUSWAHL öffnen, nach der entsprechenden Wahl in Spalte A suchen und das nebenstehende Array (B?:G?+7)in MAIN kopieren.

Statisch hab ich des schon geschafft. Also einfach andere Tabelle öffnen und B1 bis G8 markieren und rüber kopieren.

Allerdings fehlt mir für dynamischen Suchen&Kopieren das Wissen. Hoffe mir kann jemand weiterhelfen.
 
  • #2
so, bin nun schon ein ganzes Stück weiter. Das Makro funktioniert mittlerweile so wie ich es will.
Allerdings kriege ich sobald es in ein Button eingefügt wird nen Laufzeitfehler 1004.

Vielleicht hat da jemand nen Tipp, wie es funktioniert!

Ach ja, hab jetzt die tatsächliche Fkt. des Makros hier drin. Ist zum schnellen Finden von DIN-Vorschriften.
Es ruft ein Tabellen-Blatt (aus Gültigkeitsliste), Sucht dort nach der bestimmten Bohrung(auch ne Gültigkeitsliste). Und kopiert den Datensatz ins Hauptblatt.

Code:
Sub Kopieren()
  Dim Blatt As Variant       ->*** Variablen werden erstellt
  Dim Bohrung As Variant
      
 ->**********************************************************
  
  Blatt = Range($A$2).Value   ->*** Der Variablen Blatt wird der Inhalt der Zelle A2 zugewiesen
  Bohrung = Range($B$2).Value  ->*** Der Variablen Bohrung wird der Inhalt der Zelle A2 zugewiesen
  Sheets(Blatt).Select       ->*** Da in der Zelle A2 ein Tabellenname gespeichert ist, wird dieser aufgerufen!
  Cells(1, 1).Select        ->*** Markieren der ersten Zelle im Blatt
  Cells.Find(What:=Bohrung, After:=ActiveCell).Activate        ->*** Findet die Bohrung
  Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(9, 18)).Select  ->*** Markiert den Bereich
  Selection.Copy          ->*** Kopiert den Bereich in die Zwischenablage
  Sheets(Auswahl).Select     ->*** Wechselt auf das Blatt Auswahl
  Range(B23).Select       ->*** Aktiviert Zelle B23
  ActiveSheet.Paste        ->*** Kopiert die in der Zwischenablage enthaltenen Daten
  Application.CutCopyMode = False ->*** Hebt die Markierung der kopierten Daten auf
End Sub

So, nächste Frage:

ist es möglich den zu markierenden Bereich dynamisch zu machen? Damit meine ich die ActiveCell.Offset(9, 18) Anweisung. Hier soll statt der 9 ein dynamischer Wert stehen, der sich je nach Tabellengröße anpasst.

Die Tabelle aus der ich rauskopieren hat in Spalte A nur zu Beginn des Datensatzes einen Wert. D.h. Die darunterliegenden Zellen sind leer bis zum nächsten Datensatz

Bsp:

x1 | y | z | a| b
| y | z | a| b
| y | z | a| b
| y | z | a| b
x2 | y | z | a| b
| y | z | a| b
| y | z | a| b
x3 | y | z | a| b
 
  • #3
Das könnte dir weiterhelfen:
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(9, 18).End(xlDown)).Select
 
  • #4
danke klexy, das hat es wirklich! allerdings hab ich des schon vorher erfahren!
Werde am Freitag noch mal die komplette Lösung meines Problems hier für die Nachwelt posten!

Dann wird auch der Thread als erledigt markiert :D
 
Thema:

Excel-VBA: Suchen, Markieren & Kopieren

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.839
Beiträge
707.962
Mitglieder
51.492
Neuestes Mitglied
Janus36
Oben