Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1220to1224
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

range.select und selection.copy umgehen

range.select und selection.copy umgehen
Sandra
Hallo zusammen.
Ich komme ohne Eure Hilfe nicht weiter.
Mein Makro ist inzwischen ziemlich umfangreich, weshalb ich den Code nur zum Teil unten anfügen werde. Vorab aber erst einmal mein Problem.
Ich erstelle mit dem Makro aus einer xlsm-Datei eine xlsx-Datei. Dazu wird in der xlsm in Zeile 2 nach vorher definierten Spaltenüberschriften gesucht. Werden diese gefunden werden diese ab Zeile 2 in die xlsx-Datei eingefügt. Das klappt supper. Nun muss aber auch noch (ohne Prüfung - als feste Angabe) die Zelle c1 mit übertragen werden.
Ich hatte das mit dem Makrorekorder versucht. Da sind dann aber die Dateinamen fix. Das darf natürlich nicht sein. Kann ich diesen Code:

Set oXlSM = ThisWorkbook 'ThisWorkbook = die xlsm-Datei, in der dieser Code steht
For nIndex = LBound(ArrayQuelle) To UBound(ArrayQuelle)
With oXlSM.Sheets("Mängel vor der Abnahme") 'Name des Tabellenblattes, welches in der xlsm- _
_
Datei benutzt wird
nIndexXLSM = Application.Match(ArrayQuelle(nIndex), .Rows(2), 0) 'sucht in der Zeile 2  _
_
nach den Spaltenbeschriftungen
If IsNumeric(nIndexXLSM) Then
MaxRow = .Cells(.Rows.Count, nIndexXLSM).End(xlUp).Row 'letzte Zeile in Spalte
Set rngXLSM = .Range(.Cells(3, nIndexXLSM), .Cells(MaxRow, nIndexXLSM))
If MaxRow > 3 Then
ArrayXLSM = rngXLSM
ElseIf MaxRow = 3 Then
ArrayXLSM = rngXLSM.Resize(, 2)
ReDim Preserve ArrayXLSM(1 To UBound(ArrayXLSM), 1 To 1)
End If
'Fehlermeldung die ausgegeben wird, wenn eine festgelegte Spaltenüberschrift nicht in der xlsm- _
_
Datei gefunden werden konnte
strFehler = strFehler & sListZeichen & "Die Spalte'" & _
ArrayQuelle(nIndex) & "' wurde nicht in der Quell-Datei gefunden" &  _
vbCr
End If
End With
If IsArray(ArrayXLSM) Then
With oXLSX.Sheets("Mängel vor der Abnahme") 'Name des Tabellenblattes, welches in der   _
_
xlsx-Datei benutzt wird
nIndexXLSX = Application.Match(ArrayZiel(nIndex), .Rows(2), 0) 'sucht in der Zeile  _
_
2 nach den Spaltenbeschriftungen
If IsNumeric(nIndexXLSX) Then
'alle Inhalte der Zellen ab Zeile 3 werden für neue Daten gelöscht
.Range(.Cells(3, nIndexXLSX), .Cells(.Rows.Count, nIndexXLSX)).ClearContents
Set rngXLSX = .Cells(3, nIndexXLSX) 'erste Einfügezelle
rngXLSX.Resize(UBound(ArrayXLSM), 1) = ArrayXLSM 'Daten aus Array einfügen
Else
strFehler = strFehler & sListZeichen & "Die Spalte'" & _
ArrayZiel(nIndex) & "' wurde nicht in der Ziel-Datei gefunden" &   _
_
vbCr
End If
End With
End If
ArrayXLSM = Empty
Next nIndex
irgendwie so ergänzen, dass dieses hier:

Datum der Begehung wird übertragen
Range("C1").Select
Selection.Copy
Windows("110708 Mustervorlage Maengelliste - noch in Bearbeitung MB.xlsx"). _
Activate
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Windows("110708 Mustervorlage Maengelliste - noch in Bearbeitung.xlsm"). _
Activate
mit ausgeführt wird?
Ich würde mich freuen, wenn Ihr mir mal wieder aus der Patsche helfen könntet.
Liebe Grüße
Sandra

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

Betreff
Benutzer
Anzeige
AW: range.select und selection.copy umgehen
11.07.2011 20:25:22
fcs
Hallo Sandra,
etwa so:
oXLSX.Sheets("Mängel vor der Abnahme").Range("C1") = oXlSM.Sheets("Mängel vor der Abnahme") .Range("C1") 
Oder so
 oXlSM.Sheets("Mängel vor der Abnahme") .Range("C1") .Copy _
Destination:=oXLSX.Sheets("Mängel vor der Abnahme").Range("C1") 
Gruß
Franz
DANKE!!!
12.07.2011 09:15:34
Sandra
Hallo Franz,
genau das war es. :)
Vielen lieben Dank & einen tollen Tag!
Gruß
Sandra

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige