Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Den gefüllten Bereich eines Tabellenblattes kopieren

Mitglied: goodbytes

goodbytes (Level 2) - Jetzt verbinden

18.08.2011 um 13:50 Uhr, 10775 Aufrufe, 6 Kommentare

Hallo,
ich möchte den Bereich eines Tabellenblattes markieren und kopieren vom ersten Feld (z.B. A3) bis zum letzten gefüllten Feld (z.B. CD118). Ich müsste dazu also die letzte ermittelte Zelle ermitteln.

Und noch eine Frage habe ich. In meinem Tabellenblatt habe ich mehrere verbundene Zellen. Vor dem Umkopieren (mit Transponieren) muss ich ja leider diese verbundenen Zellen trennen und den ursprünglichen Wert in jede der nun getrennten Zellen reinschreiben.
Dies habe ich so gemacht:

01.
For Each Zelle In ActiveSheet.UsedRange 
02.
     
03.
    If Zelle.MergeCells Then 
04.
        Inhalt_alt = Zelle.Value 
05.
        ActiveSheet.UsedRange.MergeCells = False 
06.
        Inhalt_neu = Zelle.Value 
07.
        Inhalt_alt = Inhalt_neu 
08.
    Else 
09.
        If IsEmpty(Zelle.Value) Then Zelle.Value = Inhalt_alt 
10.
    End If 
11.
Next Zelle
Leider läuft das ziemlich lange, da die Tabelle sehr gut befüllt ist. Wie kann ich das optimieren?

Gruß
Torsten
Mitglied: bastla
18.08.2011 um 15:30 Uhr
Hallo TorstenB!

Versuch es mit
Range(ActiveSheet.UsedRange.Address).Copy <Zielzelle>
Grüße
bastla
Bitte warten ..
Mitglied: goodbytes
19.08.2011 um 10:05 Uhr
Hallo Bastla,
irgendwie kann ich damit nichts anfangen...

Ich stoße auch immer wieder auf eine Fehlermeldung beim Selektieren der Zellen. Was stimmt da nicht? Mittels "Cells" muss ich doch einen Bereich markieren können?

01.
Dim Zeilenanzahl As Integer 
02.
Dim Spaltenanzahl As Integer 
03.
 
04.
Zeilenanzahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 
05.
Spaltenanzahl = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column 
06.
 
07.
Range(Cells(1, 1), Cells(Spaltenanzahl, Zeilenanzahl)).Select
Die Fehlermeldung lautet: Fehler 1004 "Anwendungs- oder Objektorientierter Fehler".

Gruß
Torsten
Bitte warten ..
Mitglied: bastla
19.08.2011 um 10:37 Uhr
Hallo TorstenB!

Unabhängig davon, dass Du Zeilen und Spalten in der falschen Reihenfolge angibst (und der Variablenname "Zeilenanzahl) eigentlich irreführend ist, da Du ja eine Zeilennummer ermittelst) und auch nur die Spalte A und die Zeile 1 untersucht werden -
Spaltenanzahl = ActiveSheet.Cells(Zeilenanzahl, Columns.Count).End(xlToLeft).Column
würde zumindest die letzte Spalte der gefundenen letzten Zeile ermitteln - eine Frage: Befindet sich Dein Code in einem Modul? Den Fehler reproduzieren kann ich eigentlich nur, wenn ich den Code einem Blatt zuordne und beim Ausführen ein anderes Blatt das "ActiveSheet" ist ...

Und noch eine Frage: Wozu "Select"?
Hinsichtlich des Kopierens oben: ".Address" zu verwenden ist natürlich unnötig (auch, wenn es natürlich trotzdem funktionieren müsste) - es sollte zB
ActiveSheet.UsedRange.Copy Worksheets("Tabelle2").Range("C4")
genügen.

Grüße
bastla
Bitte warten ..
Mitglied: goodbytes
19.08.2011 um 10:58 Uhr
Hallo Bastla,
ja, mit den Spalten und Zeilen hast du natürlich recht.

Zum Kopieren. Ich habe hier beim Test als Start nur die 1, 1 gewählt. Der zu kopierende Bereich kann auch woanders beginnen, z.B. von B2 bis zum Ende des gefüllten Bereiches (z.B. CA390).
Mit dem Select will ich nur den Bereich markieren und danach kommt ein copy...

Der Code steckt übrigens in einem Modul.

Gruß
Torsten
Bitte warten ..
Mitglied: bastla
19.08.2011 um 11:32 Uhr
Hallo TorstenB!
01.
Dim Zeilenanzahl As Integer 
02.
Dim Spaltenanzahl As Integer 
03.
 
04.
Zeilenanzahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 
05.
Spaltenanzahl = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column 
06.
 
07.
Range(Cells(1, 1), Cells(Zeilenanzahl, Spaltenanzahl)).Select
bzw
01.
Dim Zeilenanzahl As Integer 
02.
Dim Spaltenanzahl As Integer 
03.
 
04.
Zeilenanzahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 
05.
Spaltenanzahl = ActiveSheet.Cells(Zeilenanzahl, Columns.Count).End(xlToLeft).Column 
06.
 
07.
Range(Cells(1, 1), Cells(Zeilenanzahl, Spaltenanzahl)).Select
funktioniert bei mir aus einem Modul heraus ...
Mit dem Select will ich nur den Bereich markieren und danach kommt ein copy...
Anstelle des "Select" kannst Du auch gleich "Copy" verwenden ...
Die letzte verwendete Zeile / Spalte solltest Du übrigens mit
01.
LetzteZeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row 
02.
LetzteSpalte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
ermitteln können - bzw für die Adresse der letzten Zelle:
LetzteZelle = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Address
Grüße
bastla
Bitte warten ..
Mitglied: goodbytes
18.09.2011 um 21:22 Uhr
Funktioniert jetzt super, Dankeschön !!!

Torsten
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

Excel Tabellenblatt finden und Zeile kopieren

gelöst Frage von Florian86Microsoft Office3 Kommentare

Hallo, ich möchte anhand von Buttons einen Zugang bzw. einen Abgang auf bestimmte Tabellenblätter kopieren. Die Tabellenblätter entsprechen der ...

VB for Applications

Bereich Markieren und Kopieren (Verständnis)

gelöst Frage von Gimli3311VB for Applications4 Kommentare

Guten Tag Zusammen, ich hab ein Verständnisproblem was das Thema angeht einen Bereich zu markieren und dann zu kopieren. ...

VB for Applications

Über VBA kopieren des gefilterten Bereiches

Frage von BlueLinesVB for Applications1 Kommentar

Hallo an Alle Könnte mir vielleicht jemand mit diesem Code weiterhelfen. 1. Problem: Er soll aus einer Mappe die ...

VB for Applications

VBA - Bereich von Excel nach Word kopieren

gelöst Frage von schwazza89VB for Applications6 Kommentare

Hallo zusammen, ich suche eine Möglichkeit einen Bereich aus Excel in eine Tabelle in Word zu kopieren. Meinen ersten ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 3 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing21 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

TK-Netze & Geräte
Telefonie zweier Fritzboxen mit je eigenem DSL Anschluss verbinden
Frage von hannsgmaulwurfTK-Netze & Geräte10 Kommentare

Hallo zusammen, ich habe hier einen Haushalt mit zwei Anschlüssen. Einmal ISDN, einmal DSL. An jedem Anschluss hängt eine ...