Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1884to1888
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

Alternative zu Activate

Alternative zu Activate
08.06.2022 19:27:12
MiSchi
Hallo Excel-Forum,
ich versuche eine Alternative ohne die Aktivierung des Tabellenblatts zu finden.
tab1 wird im Verlauf in einer Schleife mit neuen Tabellenblatt-Namen versehen.
Set tbl_Daten1 = ThisWorkbook.Worksheets(tab1)
tbl_Daten1.Activate
GesGroesse1 = Application.Sum(Range(Cells(2, 4), Cells(lngZeile1Max, 4))) 'Application und WorksheetFunction = gleich
'GesGroesse2 = WorksheetFunction.Sum(Range(Cells(2, 4), Cells(lngZeile1Max, 4)))
leider funktioniert so was nicht:
With tbl_Daten1
GesGroesse1 = Application.Sum(Range(Cells(2, 4), Cells(lngZeile1Max, 4)))
End With
oder doch, wenn man es richtig anstellt?
Hat jemand eine Idee?
Viele Grüße
MiSchi

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alternative zu Activate
08.06.2022 19:35:19
onur
Hast du denn mal gelesen, wozu überhaupt "With" gut ist und wie man "With" korrekt verwendet?
AW: Alternative zu Activate
08.06.2022 19:50:19
GerdL
Moin MiSchi,
ja klar.
Dim tblDaten1
Dim lngZeie1Max As Long
Dim GesGroesse1 As Double
lngZeile1Max = 18
Set tbl_Daten1 = ThisWorkbook.Worksheets(tab1)

With tbl_Daten1
GesGroesse1 = Application.Sum(.Range(.Cells(2, 4), .Cells(lngZeile1Max, 4)))
End With
MsgBox GesGroesse1
AW: Alternative zu Activate
08.06.2022 20:25:41
Luschi
Hallo GerdL,
genau dieses Problem habe ich ihm am 02.06.2022 08:28:23 schon mal erklärt - und nun dieser Rückschlag - einfach enttäuschend/niederschmetternd - ich glaube es ist zwecklos!
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Alternative zu Activate
08.06.2022 21:19:22
MiSchi
Sorry Luschi,
möglicherweise hast du recht, dass es für dich (und mich) ein Rückschlag ist.
Ich verstehe zu wenig von VBA und vor allem nicht die Fehlermeldungen. Ich versuchte mich an der falschen Stelle. Aber jetzt, wo du mich auf den selben Fehler mit den fehlenden Punkt hinweist erkenne ich den Fehler. Vorher war ich überzeugt, dass der Fehler bei der Verwendung von Application.Sum liegt oder WorksheetFunction.Sum . Damals war der Feher, dass der Code durchlief, jedoch mit dem "falschen" (nicht erwarteten Ergebnis). Jetzt kam eine Fehlermeldung im Code.
Danke an GerdL für die Korrektur!
Ich habe auch wenig von den Erklärungen auf den Microsoftseiten gelesen und noch viel weiniger davon verstanden. Viele der Beispiele verstehe ich mit meinem Niveau nicht.
Viele Grüße
MiSchi
Anzeige
AW: Alternative zu Activate
08.06.2022 21:35:26
Oberschlumpf
Hi,
mir ist es nicht anders ergangen - da hilft nur...ÜBEN ÜBEN ÜBEN!!!
VBA zu lernen ist nix anderes, so mein Empfinden, als Englisch, Spanisch, sonstige Fremdsprache (FS) zu lernen
Du MUSST, und es geht nicht anders! ...das Vokabular kennen
bei VBA = alle Befehlsnamen, Eigenschaften, Methoden = Vokabular
bei FS = eben alle in der FS vorkommenden Wörter
Du MUSST, und es geht nicht anders! ...die Grammatik kennen
bei VBA = die Syntax eines jeden Befehls
bei FS = die Art und Weise, wie man die Wörter verständlich ausdrückt
Ja, ich weiß, man kann nicht jeden Befehl, nicht jede Syntax auswendig wissen - geht mir genau so
Aber man kann googeln!
Ich kann mir z Bsp nie nicht merken, wie man die letzte, benutzte Zeile in einer bestimmten Spalte auslesen kann
Aber Google hat mir mal "verraten", dass ich die Antwort dazu unter anderem hier finde
https://www.excel-inside.de/vba-loesungen/zellen-a-bereiche/337-letzte-zeile-letzte-spalte-und-letzte-zelle-per-vba-ermitteln
Und dort finde ich...
Cells(Rows.Count, 1).End(xlUp).Row = letzte, benutzte Zeile in Spalte 1 (A)
Das ist jetzt natürlich - nur ein! - Bsp.
Ach ja...damit du beim nächsten Mal, wenn du genau wieder diesen Befehl benötigst und nicht mehr weißt, nicht wieder erst mal googeln musst....füg doch die Lösungsseite (und natürlich jede andere Seite, die dir hilft) zu deinen Favoriten hinzu....
Ciao
Thorsten
Anzeige
AW: Alternative zu Activate
09.06.2022 07:29:25
MiSchi
Hallo Thorsten,
da hast Du recht - wie bei FS - üben.
Ein paar Vokabeln kenne ich, aber mit der Grammatik hapert es sehr.
Im Gegensatz zu einer FS, wo ein Zuhörer auch bei fehlender Grammatik oft versteht was man meint, ist "der Angesprochene" in VBA wenig fehlerverzeihend.
Ich versuche diese zu verstehen und zu verbessern :-)
Viele Grüße
MiSchi
AW: Alternative zu Activate
08.06.2022 21:53:26
MiSchi
Hallo Luschi,
ich noch mal.
Ich bin noch mal all meine Versuche (die als Historie mit ' noch im Code stehen durchgegangen)
Ich hatte auch deinen Hinweis (.Range) aufgenommen und
GesGroesse1 = Application.Sum(.Range(Cells(2, 4), Cells(lngZeile1Max, 4)))
getestet - Anwendungs- oder Objektdefinierter Fehler
Auf die Punkte vor Cells wäre ich nie ohne Hilfe gekommen.
Viele Grüße
MiSchi
Viele Grüße
MiSchi
Anzeige
AW: Alternative zu Activate
08.06.2022 22:24:46
Daniel
Hi
Wenn du nicht das aktive Tabellenblatt referenziert, muss die Tabellenblattangabe (oder in deinem Fall der Punkt der With-Klammer) vor JEDEM Range, Cells, Columns oder Rows stehen, ich wiederhole nochmal: vor jedem.
Bei dir fehlen noch welche.
Gruß Daniel
AW: Alternative zu Activate
09.06.2022 06:55:59
MiSchi
Danke Daniel, für den Hinweis
ja, die Punkte vor Cells fehlten damals noch bei meinem Versuch - deshalb der Fehler.
Dank Eurer Hilfe weiß ich jetzt, dass es nicht reicht nur vorne den Punkt bei Range zu setzten sondern vor jede dieser Angaben
Viele Grüße
MiSchi
AW: Alternative zu Activate
08.06.2022 22:19:25
onur
Ist doch ganz einfach - wie bei Mathe:
Statt
x = b*a + c*a + 11* a (also das "a" dauernd zu wiederholen), kannst du ja auch
x = a* (b+c+11) schreiben.
Genauso (anstatt dauernd "Sheets("Tabelle1")" zu wiederholen) statt:

Sheets("Tabelle1").Activate
Sheets("Tabelle1").Range("D1")=Sheets("Tabelle1").Range("F1")
Sheets("Tabelle1").Range("A1")=Sheets("Tabelle1").Range("B1") * Sheets("Tabelle1").Range("C1")
Schreibt man:

With Sheets("Tabelle1")
.Activate
.Range("D1")=.Range("F1")
.Range("A1")=.Range("B1") * .Range("C1")
End With
Das ist einfacher, übersichtlicher, kompakter und dadurch auch besser zu lesen.
Anzeige
AW: Alternative zu Activate
09.06.2022 06:58:15
MiSchi
Danke onur, anschaulicher Vergleich!
Viele Grüße
MiSchi
AW: Alternative zu Activate
09.06.2022 07:34:51
MiSchi
Herzlichen Dank für Eure Antworten!
Ihr fünf habt mir in der letzten Tagen sehr geholfen!
Viele Grüße
MiSchi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige