Hot News:

Unser Angebot:

  Foren auf CAD.de
  Excel
  Excel VBA Zellen eines Datenblatts ans Ende eines anderen Datenblatts kopieren

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  Excel VBA Zellen eines Datenblatts ans Ende eines anderen Datenblatts kopieren (4665 mal gelesen)
daniu
Mitglied
Mechanik-Entwickler


Sehen Sie sich das Profil von daniu an!   Senden Sie eine Private Message an daniu  Schreiben Sie einen Gästebucheintrag für daniu

Beiträge: 866
Registriert: 03.11.2004

Intel Xeon W3550
12GB RAM; NVidia Quadro 4000
Win 7 Enterprise 64bit; NX7.5
TeamCenter 8

erstellt am: 09. Aug. 2012 09:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

folgendes Problem:
ich möchte alle Zeilen eines Datenblatts ans Ende eines anderen kopieren.

Dazu hatte ich folgenden VBA Code verwendet:
ActiveWorkbook.Worksheets(I + 1).UsedRange.Copy Destination:=ActiveWorkbook.Worksheets(I).Range("A1").End(xlDown).Offset(1, 0)

I ist eine Zählervariable, die entsprechend durchzählt. Es wird abgeprüft, ob es Worksheet(I) und Worksheet(I+1) gibt

Wenn ich das langsam mit dem Debugger durchmache, läuft es durch, wenn ich es ohne Unterbrechung mache, bekomme ich meistens bei unterschiedlichen Stellen eine Fehlermeldung: "" und Excel stürzt komplett ab.
Eine MsgBox oder irgendeine andere Unterbrechung, verhindert den Absturz.

Es scheint so, als würde sich Excel verschlucken ...

Keine Ahnung, ob das wichtig ist, aber: ich gehe alle Blätter durch und suche nach Tabellenblätter in der Form: irgendwas_1 / irgendwas_2 - sobald ich das gefunden habe, versuche ich, die Daten rüberzukopieren.

habe jetzt schon einiges rumprobiert und gelesen, was man statt usedrange verwenden kann, auch mit Select anzeigen lassen, was er da selectiert - sieht alles passend aus, aber das Makro stürzt immer an unterschiedlicher Stelle ab 

Gruß
Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daniu
Mitglied
Mechanik-Entwickler


Sehen Sie sich das Profil von daniu an!   Senden Sie eine Private Message an daniu  Schreiben Sie einen Gästebucheintrag für daniu

Beiträge: 866
Registriert: 03.11.2004

Intel Xeon W3550
12GB RAM; NVidia Quadro 4000
Win 7 Enterprise 64bit; NX7.5
TeamCenter 8

erstellt am: 09. Aug. 2012 10:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hier noch die Fehlermeldung:

[edit: sorry - falsch - das war die Fehlermeldung bei Verwendung von Paste statt Destination]

Laufzeitfehler '-2147417848 (80010108)':

Automatisierungsfehler
Das aufgerufene Objekt wurde von den Clients getrennt

[edit2]
manchmal stürzt Excel auch einfach so ab - ohne genauer darauf einzugehen, warum. Unter Details steht dann z. B.:

Problemsignatur:
  Problemereignisname: APPCRASH
  Anwendungsname: EXCEL.EXE
  Anwendungsversion: 14.0.6117.5003
  Anwendungszeitstempel: 4f622ef8
  Fehlermodulname: VBE7.DLL
  Fehlermodulversion: 7.0.16.27
  Fehlermodulzeitstempel: 4f86f5aa
  Ausnahmecode: c0000005
  Ausnahmeoffset: 00003742
  Betriebsystemversion: 6.1.7601.2.1.0.256.4
  Gebietsschema-ID: 1031
  Zusatzinformation 1: 30ba
  Zusatzinformation 2: 30baa02468220cbe32edfea7e57957fc
  Zusatzinformation 3: 9659
  Zusatzinformation 4: 9659639a8d9db650f7fcf1bc2e6f7560

Lesen Sie unsere Datenschutzbestimmungen online:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0407

Wenn die Onlinedatenschutzbestimmungen nicht verfügbar sind, lesen Sie unsere Datenschutzbestimmungen offline:
  C:\Windows\system32\de-DE\erofflps.txt

und manchmal - läuft es dann doch einfach durch ...

ich habe Option Explicit oben im Modul und entsprechend alle Variablen vorher definiert.

[Diese Nachricht wurde von daniu am 09. Aug. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 09. Aug. 2012 11:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für daniu 10 Unities + Antwort hilfreich

Mal einfach als Vermutung in den Raum gestellt: Kann es sein, dass die Probleme durch unterschiedliche Formatierungen der Zellen / Spalten hervorgerufen werden ?

Axel

------------------
Inoffizielle deutsche CATIA Hilfeseite  Netiquette von cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daniu
Mitglied
Mechanik-Entwickler


Sehen Sie sich das Profil von daniu an!   Senden Sie eine Private Message an daniu  Schreiben Sie einen Gästebucheintrag für daniu

Beiträge: 866
Registriert: 03.11.2004

Intel Xeon W3550
12GB RAM; NVidia Quadro 4000
Win 7 Enterprise 64bit; NX7.5
TeamCenter 8

erstellt am: 09. Aug. 2012 11:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

Danke für das feedback.

Kann ich mir kaum vorstellen. Beide Tabellenblätter werden kurz vorher erzeugt, indem eine (Text)Datei geöffnet wird und dann in die Arbeitsmappe kopiert wird.
Gleiches Dateiformat, gleicher Prozess

Grüße
Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 09. Aug. 2012 11:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für daniu 10 Unities + Antwort hilfreich

Hi daniu,

Ferndiagnose gestaltet sich als schwierig. Falls es Dich moralisch unterstützt: Ich hatte sowas auch schonmal, Debug läuft, Vollgas nicht. Weiß aber leider nicht mehr, woran es lag  .

Magst Du Deine Mappe "neutralisiert" hochladen?

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daniu
Mitglied
Mechanik-Entwickler


Sehen Sie sich das Profil von daniu an!   Senden Sie eine Private Message an daniu  Schreiben Sie einen Gästebucheintrag für daniu

Beiträge: 866
Registriert: 03.11.2004

Intel Xeon W3550
12GB RAM; NVidia Quadro 4000
Win 7 Enterprise 64bit; NX7.5
TeamCenter 8

erstellt am: 09. Aug. 2012 12:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Sample.txt

 
Hi,

Datei muss in XLSM umbenannt werden. Sorry: ich verwende Office 2010


Gruß
Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 09. Aug. 2012 13:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für daniu 10 Unities + Antwort hilfreich

Huhu,

danke für die Datei. Seltsam: Läuft hier - auch Office 2010 - auf Anhieb sauber durch, keine Fehlermeldung, nichts. Egal, ob mit F5 oder Einzelschritt mit F8: Alles passt! Schön sortiert, 1-20, Register 9 ist aktiv am Ende.

Da muss ich passen; liegt es an irgendwelchen Sicherheits-Einstellungen?

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daniu
Mitglied
Mechanik-Entwickler


Sehen Sie sich das Profil von daniu an!   Senden Sie eine Private Message an daniu  Schreiben Sie einen Gästebucheintrag für daniu

Beiträge: 866
Registriert: 03.11.2004

Intel Xeon W3550
12GB RAM; NVidia Quadro 4000
Win 7 Enterprise 64bit; NX7.5
TeamCenter 8

erstellt am: 09. Aug. 2012 14:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

Seltsam. Hab jetzt diese nichtsändernde Änderung gemacht:

Code:
I = 2
    While (I < WS_Count)
      If (Worksheets(I).Visible = xlSheetVisible And (Worksheets(I + 1).Visible = xlSheetVisible)) Then ' nur sichtbare verarbeiten
        text1 = Worksheets(I).Name
        text2 = Worksheets(I + 1).Name
        ltext1 = Left(text1, Len(text1) - 1)
        ltext2 = Left(text2, Len(text2) - 1)
        If (Right(text1, 1) = "1" And Right(text2, 1) = "2" And (ltext1 = ltext2) And Not IsNumeric(ltext1)) Then
          ' rechter Teil: 1 und 2, linker Teil gleich und nicht nummerisch
          Worksheets(I + 1).UsedRange.Copy _
                          Destination:=Worksheets(I).Range("A1").End(xlDown).Offset(1, 0) ' hier tritt der Fehler auf!
          Worksheets(I).Name = Left(text1, Len(text1) - 2)
          'Application.Wait Now + TimeSerial(0, 0, 0.1)
          Application.DisplayAlerts = False        ' sonst kommt eine nachfrage
          Worksheets(I + 1).Delete
          Application.DisplayAlerts = True
          WS_Count = Worksheets.Count
        End If
      End If
      I = I + 1
    Wend

und bekomme es jetzt nicht mehr zum Absturz ... das Application.Wait hatte ich zum spielen drin. War aber letztendlich doch nicht nötig.

Was mich aber noch bisschen stört, ist dass er beim Sortieren aus irgendeinem Grund das Blatt wechselt. Muss das so? Müsste ich ggf. manuell wieder zurückwechseln, oder lässt sich das irgendwie verhindern?

Gruß
Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 09. Aug. 2012 15:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für daniu 10 Unities + Antwort hilfreich

Aha, das "Wait" habe ich gepflegt ignoriert...

@Blatt aktiv: Beim händischen Kopieren wird das eingefügte Register aktiv gesetzt. Nehme an, dass verhält sich mit Makro ähnlich. Gib' ihm am Ende das Register, welches aktiv sein soll - ggf. das eingangs aktive Blatt in eine Variable zwischenspeichern.

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daniu
Mitglied
Mechanik-Entwickler


Sehen Sie sich das Profil von daniu an!   Senden Sie eine Private Message an daniu  Schreiben Sie einen Gästebucheintrag für daniu

Beiträge: 866
Registriert: 03.11.2004

Intel Xeon W3550
12GB RAM; NVidia Quadro 4000
Win 7 Enterprise 64bit; NX7.5
TeamCenter 8

erstellt am: 16. Aug. 2012 14:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,
nur kurze Rückmeldung: Der Fehler kam wieder und zwar jedes Mal. Nur im Debug-Mode mit Schritt für Schritt konnte ich es ausführen. Zu Hause hab ich es auf meinem privaten Rechner versucht und das Script nie zum Absturz gebracht. Komisch ...

Hab ein Wait mit 0,1 eingefügt, jetzt klappt es.

Gruß
Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz