Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
220to224
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
220to224
220to224
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

4 Spalten nur kopieren

4 Spalten nur kopieren
18.02.2003 08:14:27
Joerg
Hallo Forum ich bins nochmal.

Diesen code habe ich von Euch mal erhalten:

Public Sub Auswerten_temp()
Dim lngRow As Long, lngRowDest As Long
Dim intCounter As Integer, intCopyCount As Integer
Dim varKrit As Variant, varFind As Variant
Application.ScreenUpdating = False
varKrit = TextBox1.Value
If varKrit = "" Then Exit Sub
With Worksheets("Simpati-Daten").Range("D:D")
Set varFind = .Find(What:=varKrit, After:=Range("D1"), _
LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlPrevious, _
MatchCase:=True)
If Not varFind Is Nothing Then
intCounter = 1
lngRow = varFind.Row
With Worksheets("Auswert").Range("D:D")
lngRowDest = .Range("D65536").End(xlUp).Row
End With
If lngRowDest > 1 Then lngRowDest = lngRowDest + 1
Do
If Cells(lngRow - 5 * intCounter, varFind.Column).Value = varFind Then
intCopyCount = intCopyCount + 1
Rows(lngRow - 5 * intCounter).Copy _
Destination:=Worksheets("Auswert").Range("A" & _
lngRowDest + 1 + intCopyCount)
End If
intCounter = intCounter + 1
If intCopyCount = 5 Then Exit Do
Loop Until lngRow - 5 * intCounter < 1
Else: MSGbox "Sollwert 1 """ & varKrit & """ wurde nicht gefunden"
End If
End With
Application.ScreenUpdating = True
Call Auswerten_1
End Sub

Dieses Funktioniert auch aber ich möchte nur die ersten 4-5 Spalten in die neue Datei kopieren.
Wo muß ich dran drehen ?
Gruß Jörg

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

Betreff
Datum
Anwender
Anzeige
Re: 4 Spalten nur kopieren
18.02.2003 09:39:14
Nike

Hi,
versuch`s mal hiermit:

Der Dopplepunkt vor deinem Else definiert dieses als
Sprungmarke für eine Goto Anweiseung,
also Vorsicht ;-)

Bye

Nike

copy-mothode fehlerhaft
18.02.2003 13:13:45
Joerg

Hi ,

wenn ich den Code verwende so bekomme ich die Fehlermeldung
"Die Copy-Methode des Range-Objektes ist fehlgeschlagen"
Diese Fehlermeldung bezieht sich auf folgenden Code-Teil:

wksSim.Range(wksSim.Cells(lngRow - 5 * intCounter, 1), _
wksSim.Cells(lngRow - 5 * intCounter, 4)).Copy _
Destination:=wksAus.Range(wksAus.Cells(lngRowDest + 1 + intCopyCount, 1), _
wksAus.Cells(lngRowDest + 1 + intCopyCount, 4)).Copy

Wer weiß den hier Rat!

Gruß Jörg

Anzeige
copy-mothode fehlerhaft
18.02.2003 13:13:54
Joerg

Hi ,

wenn ich den Code verwende so bekomme ich die Fehlermeldung
"Die Copy-Methode des Range-Objektes ist fehlgeschlagen"
Diese Fehlermeldung bezieht sich auf folgenden Code-Teil:

wksSim.Range(wksSim.Cells(lngRow - 5 * intCounter, 1), _
wksSim.Cells(lngRow - 5 * intCounter, 4)).Copy _
Destination:=wksAus.Range(wksAus.Cells(lngRowDest + 1 + intCopyCount, 1), _
wksAus.Cells(lngRowDest + 1 + intCopyCount, 4)).Copy

Wer weiß den hier Rat!

Gruß Jörg

Re: copy-mothode fehlerhaft
18.02.2003 13:32:38
Nike

Hi,
da ist ein .copy zuviel (am Ende)
wksSim.Range(wksSim.Cells(lngRow - 5 * intCounter, 1), _
wksSim.Cells(lngRow - 5 * intCounter, 4)).Copy _
Destination:=wksAus.Range(wksAus.Cells(lngRowDest + 1 + intCopyCount, 1), _
wksAus.Cells(lngRowDest + 1 + intCopyCount, 4))
Du gibst di Destination einfach nur an...

Bye

Nike

Anzeige
Re: copy-mothode fehlerhaft
18.02.2003 13:47:43
Joerg

Hi nike,

geht ab er nun sind 2 leer Zeilen über den eingefügten Werten
zusehen.
Ich habe auch schon probirt bekomme es aber nicht hin.
Kannst Du mir nochmals helfen.

Gruß Jörg

Gefunden aber ......
18.02.2003 13:55:16
Joerg

Hi Nike abe es gefunden:

hier das geänderte:

With wksAus.Range("D:D")
lngRowDest = .Range("D65536").End(xlUp).Row - 2
End With
If lngRowDest > 1 Then lngRowDest = lngRowDest + 1
Do

Aber mir ist nun gerade gesagt worden das einfach nur 2 Spalten übersprunger werden soll.
D.h. :

Aus Simpati-Daten die Spalten A-D und Spalte G .

Sorry aber wenn die anderen nicht wissen was sie wollen!

Kannst Du mir da Helfen!

Gruß Jörg


Anzeige
Re: Gefunden aber ......
18.02.2003 14:33:01
Nike

Hi,
einfach nochmal die Copy Aktion mit nur einer Zelle...
zu dem hier
wksSim.Range(wksSim.Cells(lngRow - 5 * intCounter, 1), _
wksSim.Cells(lngRow - 5 * intCounter, 4)).Copy _
Destination:=wksAus.Range(wksAus.Cells(lngRowDest + 1 + intCopyCount, 1), _
wksAus.Cells(lngRowDest + 1 + intCopyCount, 4))

Noch das hier:
wksSim.Range(wksSim.Cells(lngRow - 5 * intCounter, 7)).Copy _
Destination:=wksAus.Range(wksAus.Cells(lngRowDest + 1 + intCopyCount, 5))

Bye

Nike

Re: Gefunden aber ......
18.02.2003 14:37:27
Martin Beck

Hallo Jörg,

wieso kopierst Du nicht alles und löschst in der Zieltabelle die überflüssigen Spalten (hier E und F)?

Gruß
Martin Beck

Anzeige
Re: Gefunden aber ......
18.02.2003 17:27:32
Joerg

Gut aber woran soll ich es anhängen,
wenn ich es am Ende des oberen Teiles anhänge
bekomme ich eine Fehlermeldung welche besagt
das Range in Worksheet nicht gefunden werden kann.

sorry aber ich bin halt Excel(VBA)-Freak.

Gruß Jörg


Re: Gefunden aber ......
19.02.2003 09:09:34
Nike

Hi,
mach`s mal so:


Sag bescheid ob`s klappert,
ich kanns halt hier nicht testen...

Bye

Nike
P.S. Bei den ganz langen Zeilen die Umbrüche wieder rausnehmen,
das macht halt das Forum...

Re: Gefunden aber ......
20.02.2003 17:56:59
Joerg

Hi ,

ich habe einfach mal den Abschnitt alleine eingebunden:

Public Sub Auswerten1()
Dim wksAus As Worksheet
Dim wksSim As Worksheet
Dim lngRow As Long, lngRowDest As Long
Dim intCounter As Integer, intCopyCount As Integer
Dim varKrit As Variant, varFind As Variant
Application.ScreenUpdating = False
varKrit = TextBox3.Value
If varKrit = "" Then Exit Sub
Set wksAus = Worksheets("Auswert")
Set wksSim = Worksheets("Simpati-Daten")
With wksSim.Range("D:D")
Set varFind = .Find(What:=varKrit, After:=Range("D1"), _
LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlPrevious, _
MatchCase:=True)
If Not varFind Is Nothing Then
intCounter = 1
lngRow = varFind.Row
With wksAus.Range("D:D")
lngRowDest = .Range("D65536").End(xlUp).Row - 2
End With
If lngRowDest > 1 Then lngRowDest = lngRowDest + 1
Do
If wksSim.Cells(lngRow - 5 * intCounter, varFind.Column).Value = varFind Then
intCopyCount = intCopyCount + 1
wksSim.Range(wksSim.Cells(lngRow - 5 * intCounter, 7)).Copy _
Destination:=wksAus.Range(wksAus.Cells(lngRowDest + 1 + intCopyCount, 5))
End If
intCounter = intCounter + 1
If intCopyCount = 5 Then Exit Do
Loop Until lngRow - 5 * intCounter < 1
Else
MSGbox "Sollwert 1 """ & varKrit & """ wurde nicht gefunden"
End If
End With
Application.ScreenUpdating = True
Call Auswerten_2
End Sub

Aber trotzdem bekomme ich immer die Fehlermeldung :
Laufzeit '1004'
Die Methode'Range' für das Objekt '_Worksheet' ist fehlgeschlagen

Es wird immer folgender Bereich markiert:

wksSim.Range(wksSim.Cells(lngRow - 5 * intCounter, 7)).Copy _
Destination:=wksAus.Range(wksAus.Cells(lngRowDest + 1 + intCopyCount, 5))

Evt. kannst Du damit etwas anfangen!

Gruß Jörg

Anzeige
Re: Gefunden aber ......
21.02.2003 08:53:22
Nike

Hi,
es könnte zu Problemen bei verbundenen Zellen kommen.
Ist das der Fall?

Bye

Nike

Re: Gefunden aber ......
21.02.2003 09:40:30
Joerg

hi nike,

nein es sind immer einzelne Spalten.

Jörg

Re: Gefunden aber ......
21.02.2003 13:28:15
Nike

Hi,
das kann natürlich erst funken, wenn lngRow größer 5
ist, das davon ja 5 abgezogen werden...
und 5-5 = 0 und das mal 1 bleibt bei 0 und ne Zeile 0
gibt`s nicht, die fangen bei 1 an ;-)

Bye

Nike

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige