Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  VBA letzten Zeile in mehreren Tabellen

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
  
Xometry Europe erweitert das Angebot um Vakuumguss und Formpressen, eine Pressemitteilung
Autor Thema:  VBA letzten Zeile in mehreren Tabellen (1257 / mal gelesen)
AndreasBo
Mitglied
TZ & Konstruktion


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

Beiträge: 861
Registriert: 16.11.2006

********
Wenn am Anfang alles schief geht,
nenne es Version 1.0!

erstellt am: 19. Feb. 2021 08:23    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,

in einer VBA-Programmierung aktiviere ich eine Tabelle und suche dann die letzte Zeile, dann gehe ich in eine andere Tabelle und suche da die letzte Zeile.

Kann man Sheets(???).Activate verschachteln?

Code:

Sub Tabellen_Data_Clear()
  Dim i As Integer
  Dim TabName1 As String
  Dim TabName2 As String

TabName1 = "Tab_ZtErf_Uebrsicht"
TabName2 = "Tab_PA_PF"

    Sheets(TabName1).Activate
    '** Ermittlung der letzten Zeile in Spalte A
    lz = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Rows.Row
   
        '** Durchlauf aller Zeilen
        For t = lz To 2 Step -1 'Zählung rückwärts bis Zeile 2
        'Abfragen, ob in der ersten Spalte die Zelle nicht leer ist
            If ActiveSheet.Cells(t, 1).Value <> "" Then
                ActiveSheet.Rows(t).Delete Shift:=xlUp
            End If
        Next

    Sheets(TabName2).Activate
    '** Ermittlung der letzten Zeile in Spalte A
    lz = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Rows.Row
   
        '** Durchlauf aller Zeilen
        For t = lz To 2 Step -1 'Zählung rückwärts bis Zeile 2
        'Abfragen, ob in der ersten Spalte die Zelle nicht leer ist
            If ActiveSheet.Cells(t, 1).Value <> "" Then
                ActiveSheet.Rows(t).Delete Shift:=xlUp
            End If
        Next

Worksheets(1).Activate 'Zu Tabelleblatt 1 gehen
MsgBox "Tabellen '" & TabName1 & "' und '" & TabName2 & "' sind leer.", vbInformation
End Sub


------------------
Gruß
AndreasBo
Ich nutze alte Boardsuche | Google | Netiquette
********
PTC Creo
********
IntelCore i7-9750H CPU | Windows 10 Pro 64 BIT | 32GB RAM | Nvidia Quadro T2000

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

Nepumuk
Mitglied
Entwicklungsleiter


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

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 19. Feb. 2021 10: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 AndreasBo 10 Unities + Antwort hilfreich

Hallo Andreas,

teste mal:

Code:
Option Explicit

Public Sub Tabellen_Data_Clear()

    Dim i As Long, lz As Long
    Dim TabName1 As String
    Dim TabName2 As String
    Dim vntItem As Variant

    TabName1 = "Tab_ZtErf_Uebrsicht"
    TabName2 = "Tab_PA_PF"

    For Each vntItem In Array(TabName1, TabName2)

        With Worksheets(vntItem)
            '** Ermittlung der letzten Zeile in Spalte A
            lz = .Cells(.Rows.Count, 1).End(xlUp).Row

            '** Durchlauf aller Zeilen
            For i = lz To 2 Step -1 'Zählung rückwärts bis Zeile 2
                'Abfragen, ob in der ersten Spalte die Zelle nicht leer ist
                If Not IsEmpty(.Cells(i, 1).Value) Then .Rows(i).Delete Shift:=xlUp
            Next
        End With
    Next

    Worksheets(1).Activate 'Zu Tabelleblatt 1 gehen
    MsgBox "Tabellen '" & TabName1 & "' und '" & TabName2 & "' sind leer.", vbInformation

End Sub


------------------
Gruß
Nepumuk 

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

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



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

Beiträge: 3434
Registriert: 07.06.2001

W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365

erstellt am: 19. Feb. 2021 10:16    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 AndreasBo 10 Unities + Antwort hilfreich

Servus,

Ja du musst aus TabName1 und TabName2 ein Array machen und dann mit for each durchlaufen lassen....

Hier ist das recht gut ersichtlich https://stackoverflow.com/questions/47498774/excel-vba-loop-through-array-of-strings-which-are-the-object-names-inside-the-lo

------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark  Bernd P.

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

AndreasBo
Mitglied
TZ & Konstruktion


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

Beiträge: 861
Registriert: 16.11.2006

********
Wenn am Anfang alles schief geht,
nenne es Version 1.0!

erstellt am: 19. Feb. 2021 12:21    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

Vielen Dank, klappt genau wie gedacht.
Das es gehen musste war mir bewusst aber der richtige Ansatz fehlte.

------------------
Gruß
AndreasBo
Ich nutze alte Boardsuche | Google | Netiquette
********
PTC Creo
********
IntelCore i7-9750H CPU | Windows 10 Pro 64 BIT | 32GB RAM | Nvidia Quadro T2000

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

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



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

Beiträge: 3434
Registriert: 07.06.2001

erstellt am: 18. Mrz. 2021 07:27    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 AndreasBo 10 Unities + Antwort hilfreich

läuft alle Tabellen durch und gibt die letzte Zeile und letzte Spalte aus.
Code:
Sub letzteZeileSpalteWB()
    Dim ws As Worksheet
    Dim letztezeileTB, letztespalteTB, letztezeileWB, letztespalteWB
    For Each ws In ActiveWorkbook.Worksheets
        letztezeileTB = ws.Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        letztespalteTB = ws.Cells.Find(What:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
        letztezeileWB = Application.Max(letztezeileTB, letztezeileWB)
        letztespalteWB = Application.Max(letztespalteTB, letztespalteWB)
    Next
    MsgBox letztezeileWB & "/" & letztespalteWB
End Sub

------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark  Bernd P.

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)2024 CAD.de | Impressum | Datenschutz