Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1432to1436
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

Suchfeld + RangeSelect und Rangecopy

Suchfeld + RangeSelect und Rangecopy
21.06.2015 20:16:04
Malte Ludwig

Hallo ihr Lieben!
Ich bin nicht gerade bewandert was das Programmieren von Excel Makros oder VBA angeht, aber wenn sich ein Problem offenbart, dann muss ich es einfach lösen.
Es geht wahrscheinlich eher um die Verkettung mehrerer Probleme, ich schildere erst einmal die ersten beiden "Steps".
Ich habe eine Mappe mit einer Tabelle (Tabelle 1). In dieser Tabelle sind Personen aufgelistet, pro Name gibt es einen Zellverbund (Bsp.: Otto Schmidt = Zellverbund B10,B11).
Hinter diesen Namen stehen in den Spalten D bis J dem Namen zugeordnete Werte.
Step1:
Ich hätte gerne ein Suchfeld, welches in Spalte B den Namen sucht, und diese, sowie die dazugehörigen Spalten D bis J markiert (Bsp.: Otto Schmidt wird gesucht, als Ergebnis der Suche werden die Zellen B10:J11 markiert.
Step2:
Nun möchte ich mit einem Button die markierten Zellen auf eine zweite (entweder versteckte oder vom Makro/VBA angelegte Tabelle kopieren.
Das ist im Prinzip schon alles,
ich beschreibe zum ersten mal solcherlei, also wenn noch Infos fehlen dann werde ich sie natürlich anfügen.
Danke vielmals im Voraus!
Malte

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beispielmappe! o.T.
21.06.2015 21:08:15
Sepp
Gruß Sepp

AW: Beispielmappe! o.T.
21.06.2015 21:32:37
Malte Ludwig
Hallo Sepp,
ich kann leider mit deiner Antwort nichts konkretes anfangen, gehe aber davon aus, dass du möchtest, dass ich eine Beispielmappe anhänge?
Werde ich first thing tomorrow erledigen, wenn ich das falsch interpretiert habe, korrigiere mich bitte.
lg
Malte

AW: Beispielmappe! o.T.
21.06.2015 21:43:27
Sepp
Hallo Malte,
genau, eine kleine Beispielmappe reicht schon, wenn jemand anderer das nachbaut sieht es nämlich sicher anders aus.
Gruß Sepp

AW: Suchfeld + RangeSelect und Rangecopy
21.06.2015 22:11:55
fcs
Hallo Malte,
verbunden Zellen in einer Liste sind keine optimale Lösung.
Ich hab dir mal ein kleines Userform gebastelt. Dieses wird angezeigt wenn du auf die Schaltfläche klickst. Dort kannst du in der Combobox den Namen auswählen und falls gewünscht die Daten kopieren.
Das Modul und das Userform kannst du im VBA-Editor per Drag und Drop aus meiner in deine Datei kopieren, und musst dann ggf. im Userformcode noch ein paar kleinigkeiten anpassen (Zeilen-Nummern, Blattnamen, Zielzelle für das Einfügen).
Dann musst du in Tabelle1 eine Schaltfläche (aus den Formularsteuerelementen) einfügen und das Anzeigen-Makro zuweisen.
Gruß
Franz
https://www.herber.de/bbs/user/98360.xlsm

Anzeige
AW: Suchfeld + RangeSelect und Rangecopy
22.06.2015 08:17:01
Malte Ludwig
Hallo Franz,
vielen Dank für deine Hilfe!
Ich Weiß, dass Zellenverbunde (-bünde?!) nicht optimal sind, aber ich brauche in den Folgespalten die zwei untereinander liegenden Zellen (die auch per VBA verknüpft sind).
Ich werde mal ein bisschen rumbasteln mit dem Code und dem Makro, und melde mich, wenn ich Probleme bekomme.
lg
Malte

AW: Suchfeld + RangeSelect und Rangecopy
22.06.2015 08:50:32
Malte Ludwig
So, habe mal ein wenig rumprobiert.
Leider kenne ich mich mit VBA null aus. Da ich die Spalte C nicht mit kopieren möchte, habe ich versucht das so in VBA einzugeben, dass nur die Zellen Bx und Bx+1, sowie die Zellen Dx:Jx+1 kopiert werden.
Allerdings hast du in deinem Code (soweit ich das verstanden habe) irgendwie den Begriff Zeile Definiert, damit er genau das ausspuckt was aktuell dabei rauskommt.
Frage: Ist es einfacher den Begriff "Zeile" neu zu definieren um Spalte C nicht mit in der Range zu haben, oder muss ich einen neuen Begriff definieren um die "beiden" Ranges zu trennen?
lg

Anzeige
AW: Suchfeld + RangeSelect und Rangecopy
22.06.2015 10:38:48
Malte Ludwig
Hab das Problem der Range mit Union gelöst, Spalte C wird jetzt nicht mehr mit kopiert.
Union(Range(.Cells(Zeile, 2), .Cells(Zeile + 1, 2)), Range(.Cells(Zeile, 4), .Cells(Zeile + 1, 10)))
Soll ich zu meiner Folgefrage einen neuen Thread aufmachen der Suche wegen?

AW: Suchfeld + RangeSelect und Rangecopy
22.06.2015 12:32:29
Malte Ludwig
Ich habe jetzt mal versucht das Userform auf mein Originaldokument zu übertragen. Habe UserForm und Modul per Drag&Drop aufs Dokument gezogen, eine zweite versteckte Tabelle hinzugefügt und diese umbenannt sowie formatiert nach deinem Beispiel.
Wenn ich jetzt auf meinen neu angelegten Button klicke, dann bekomme ich einen
Laufzeitfehler 9
Index außerhalb des gültigen Bereichs
im Modulcode.
Folgende Zeile wird vom Debugger markiert:
UserForm_Kopieren.Show
Das passiert allerdings nur, wenn ich das Makro aus meinem eigenen Dokument verknüpfe. Wenn ich das Makro aus deinem Dokument verknüpfe, dann taucht auch tatsächlich das UserForm auf, zeigt aber (logischerweise) die Namen aus deinem Dokument an.
lg

Anzeige
gelöst
22.06.2015 12:48:16
Malte Ludwig
Soo...
Tut mir Leid, dass ich mir hier so viel selbst beantworte. Problem gelöst, falsche Benennung der Tabelle1 war schon alles.
Vielen Dank nochmal für die schnelle und professionelle Hilfe euch beiden!
lg
Malte

AW: Suchfeld + RangeSelect und Rangecopy
22.06.2015 12:59:54
Malte Ludwig
Nächste (und letzte) Frage zu diesem Problem und Code:
In welcher der Zeilen im Code kann ich den Ort (die Zelle/Range) definieren wo der kopierte Inhalt auftauchen soll?
Im Moment "droppt" der Code die Kopie ja bei A2:H3, welche Variablen im Code sprechen diesen Standort an?
Danke im Voraus!
Malte

AW: Suchfeld + RangeSelect und Rangecopy
22.06.2015 22:00:31
fcs
Hallo Malte,
wenn die Zellenbereiche, die kopiert werden sollen nicht zusammenhängen, dann müssen die Zellbereiche separat kopiert werden. Verbundene Zellen können zusätzlich Kummer bereiten, ggf. muss man die Spaltenbereiche jeweils separat kopieren.
Die Zielzellen sind im Code fest vorgegeben. Es ist der Destination-Parameter der Copy-Anweisug. Ich hab die Zielbereiche mal zum leichteren Verständnis in die A1-Schreibweise umgesetzt.
Gruß
Franz
Private Sub cmbKopieren_Click()
'Selektieren Zellbereich zum Namen in eine Kopie des Musterblattes kopieren
Dim wksZiel As Worksheet, Zeile As Long
With Me.ComboBox_Namen
If .ListIndex <> -1 Then
Zeile = .List(.ListIndex, 1)
wksMuster.Visible = xlSheetVisible
'        wksMuster.Copy 'neue Mappe
wksMuster.Copy after:=wksData 'neues Blatt
Set wksZiel = ActiveSheet
wksMuster.Visible = xlSheetHidden
wksZiel.Name = .Text
With wksData
'Datenbereich zum Namen nach Zelle A2 kopieren
'            .Range(.Cells(Zeile, 2), .Cells(Zeile + 1, 10)).Copy wksZiel.Cells(2, 1)
'Zellbereich aus Spalte B nach A2:A3 kopieren
.Range(.Cells(Zeile, 2), .Cells(Zeile + 1, 2)).Copy _
Destination:=wksZiel.Range("A2:A3")
'Zellbereich aus Spalte D:J nach B2:H3 kopieren
.Range(.Cells(Zeile, 4), .Cells(Zeile + 1, 10)).Copy _
Destination:=wksZiel.Range("B2:H3")
End With
Unload Me
Else
MsgBox "Bitte erst einen Namen in der Combobox wählen"
End If
End With
End Sub

Anzeige
AW: Suchfeld + RangeSelect und Rangecopy
23.06.2015 08:03:50
Malte Ludwig
Wow, super!
Ich denke ich habe den Code verstanden, mal sehen ob ich ihn auch umsetzen kann
Danke dir vielmals!
Sollte es noch rückfragen geben, melde ich mich, ansonsten ist das Thema glaube ich soweit abgeschlossen.
Liebe Grüße
Malte

AW: Suchfeld + RangeSelect und Rangecopy
27.06.2015 16:59:37
Malte Ludwig
Hallo Franz!
Habe versucht, deinen Code auf mehrere Seiten des wkb zu erweitern, aber anscheinend habe ich etwas falsch gemacht. hier mein codebit wo der Debugger mich hinschickt mit der Fehlermeldung:
"Die Select Methode des Range-Objektes konnte nicht ausgeführt werden."

Private Sub ComboBox_Namen_Change()
'Zellbereich zum selektierten Namen selektieren
Dim wksZiel As Worksheet, Zeile As Long
With Me.ComboBox_Namen
If Me.ComboBox_Namen.ListIndex <> -1 Then
Zeile = .List(.ListIndex, 1)
With wksData
Range(.Cells(Zeile, 2), .Cells(Zeile + 1, 23)).Select
End With
With wksData2
Range(.Cells(Zeile, 2), .Cells(Zeile + 1, 18)).Select
End With
With wksData3
Range(.Cells(Zeile, 2), .Cells(Zeile + 1, 27)).Select
End With
With wksData4
Range(.Cells(Zeile, 2), .Cells(Zeile + 1, 29)).Select
End With
ActiveWindow.ScrollRow = Zeile
End If
End With
End Sub
Ich vermute mal ganz stark, dass ich irgendeinen Grundlegenden Fehler gemacht habe.
Folgendes habe ich sonst noch geändert:

Private Sub UserForm_Initialize()
Dim Zeile As Long, strName As String
Set wksData = ThisWorkbook.Worksheets("Tabelle1")
Set wksData2 = ThisWorkbook.Worksheets("Tabelle2")
Set wksData3 = ThisWorkbook.Worksheets("Tabelle3")
Set wksData4 = ThisWorkbook.Worksheets("Tabelle4")
Set wksMuster = ThisWorkbook.Worksheets("Muster")
wksData.Activate
'Namen und Zeilennummern in Auswahlliste der Combobox einlesen
With wksData
For Zeile = 10 To .Cells(.Rows.Count, 2).End(xlUp).Row Step 2
strName = .Cells(Zeile, 2).Text
With Me.ComboBox_Namen
.AddItem strName
.List(.ListCount - 1, 1) = Zeile
End With
Next
End With
End Sub
und

Option Explicit
Private wksData As Worksheet
Private wksData2 As Worksheet
Private wksData3 As Worksheet
Private wksData4 As Worksheet
Private wksMuster As Worksheet
Ziel soll es sein, dass es mehrere Range Objekte auf mehreren Seiten gibt, die alle auf das Musterblatt kopiert werden. Ob das nacheinander passiert oder ob alles gleichzeitig ausgewählt wird spielt dabei glaube ich keine Rolle.
Danke dir vielmals im Voraus!
LG
Malte

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige