Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
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
VBA kopieren mittels Intersect
27.10.2021 11:41:14
FloST
Hallo zusammen,
in meiner Datei habe ich eine UserForm programmiert, in der ich alle Spalten in einem Zeitraum von Zeile X nach Zeile Y kopieren kann.
https://www.herber.de/bbs/user/148820.xlsm
Die User Form wird mittels Klick auf den CommandButton1 ganz unten ausgeführt.
Nun möchte ich, dass in dem ausgewählten Zeitraum nur die Spalten ersetzt werden, die auch den ausgewählten Wochentagen entsprechen z.B. Dienstag - hierfür habe ich die Kontrollkästchen angelegt.
Meine Idee wäre, die angewählten Wochentage vergleichen mit der Zeile 2 und das dann als weitere Argumente im Intersect Befehl anzuführen.
Dies z.B. über die Funktion WorksheetFunction.Match, allerdings bisher ohne Erfolg.
Bin ich hier sowieso auf dem Holzweg und es gibt eine einfachere Variante, oder hat mir jemand einen Tipp wie ich diese Funktion richtig einbaue?
Hier nochmal der Code:

Private Sub CommandButton1_Click()
Dim S1 As Long
Dim S2 As Long
If ComboBox1.ListIndex = -1 Then
MsgBox "Keine Zeile ausgewählt!", vbCritical
Exit Sub
End If
If ComboBox2.ListIndex = -1 Then
MsgBox "Keine Vorlage ausgewählt!", vbCritical
Exit Sub
End If
If CDate(TextBox1.Value) > WorksheetFunction.Max(Rows(3)) Then
MsgBox "Datum 'von' liegt nicht im Bereich!", vbCritical
Exit Sub
End If
If CDate(TextBox2.Value) > WorksheetFunction.Max(Rows(3)) Then
MsgBox "Datum 'bis' liegt nicht im Bereich!", vbCritical
Exit Sub
End If
If CDate(TextBox1.Value) 
Ich bin für alle Tipps dankbar und freue mich schon auf eure Ideen,
SG Flo!

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA kopieren mittels Intersect
27.10.2021 17:30:31
onur
"hat mir jemand einen Tipp wie ich diese Funktion richtig einbaue?" - gogle doch einfach nach "VBA Intersect" , dann wird dir genauestens erklärt, WIE man sie benutzt.
z.B. so:

Set isect = Application.Intersect(Range("rg1"), Range("rg2"))
If isect Is Nothing Then
MsgBox "Ranges do not intersect"
Else
isect.Select
End If
Ist übrigens eine Methode und keine Funktion. Du solltest immer erst die Anleitung lesen, bevor du ein Gerät bedienst, oder ?
AW: VBA kopieren mittels Intersect
28.10.2021 15:36:06
FloST
Hallo Onur,
danke erst mal für gar nichts außer der Unterstellung, dass ich Google (siehe da, ich kanns sogar richtig schreiben) nicht verwende.
Außerdem hast du ja meine Aufgabenstellung / Frage wohl nicht verstanden, denn der Code-Teil mit Intersect funktioniert ja bereits seit einem halben Jahr einwandfrei, egal ob Methode oder Funktion (bitte verzeih mir den falschen Ausdruck), aber ich möchte diese noch um ein weiteres Argument erweitern.
Nichts desto trotz: ich bin schon etwas weiter als gestern, aber noch nicht ganz fertig.
Deshalb nochmal an die gesamte Community meine Frage: Habt ihr noch einen Tipp für mich?
Ich habe nun noch den Code um folgendes SUB erweitert, damit ich die gewählten Zellen schon mal auf eine Variable bringe:

Public rng As Range
--> Variable definiert

Sub FindValue()
Dim c As Range, Found As Range
Dim firstAddress As String
With Worksheets(1).Range("B2:AA2")
Set c = .Find("Mo", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Set rng = Range(c.Address)
Do
Set c = .FindNext(c)
Set Found = Range(c.Address)
Set rng = Union(rng, Found)
rng.Select
If Found.Address = firstAddress Then Exit Do
Loop While Not c Is Nothing
End If
End With
End Sub
mit der SUB wähle ich dann alle Montage aus und Definiere sie in der Variable, wenn ich rng.address eingebe erhalte ich auch die richtigen Felder.
Nun möchte ich als Argument noch diese Spalten anwenden.
Wenn ich aber im Intersect-Teil dann das Argument einfüge, kommt je nach dem wie ich es versuche eine Fehlermeldung:

Intersect(.Cells, Range(ComboBox1.RowSource).Rows(ComboBox1.ListIndex + 1).EntireRow, Range(ausw.Address)).Value = _
Intersect(.Cells, Range(ComboBox2.RowSource).Rows(ComboBox2.ListIndex + 1).EntireRow, Range(ausw.Address)).Value
==> Laufzeitfehler '91': Objektvariable oder With-Blockvariable nicht festgelegt

Intersect(.Cells, Range(ComboBox1.RowSource).Rows(ComboBox1.ListIndex + 1).EntireRow, ausw.Address).Value = _
Intersect(.Cells, Range(ComboBox2.RowSource).Rows(ComboBox2.ListIndex + 1).EntireRow, ausw.Address).Value
==> Laufzeitfehler '1004': Die Methode Intersect für das Objekt '_Global' ist fehlgeschlagen
SG Flo!
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige