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

Berechnung mit falschem Tabellenblatt

Berechnung mit falschem Tabellenblatt
09.10.2013 09:17:18
reiner
hallo Leute,
https://www.herber.de/bbs/user/87583.xls
in der Beispieldatei wird eine UF geöffnet und dann lässt sich mittels Befehlsschaltfläche eine einfache Berechnung durchführen.
Eine 2. Befehlsschaltfläche löscht das Ergebnis.
Wird jedoch eine weitere Arbeitsmappe geöffnet liegt die UF über diesem neuen Arbeitsblatt. Bei Betätigung der Befehlsschaltfläche "Berechnen" greift das zugehörige Makro auf die Zellen des nun sichtbaren Arbeitsblattes zu und liefert ein falsches Ergebnis oder evtl. eine Fehlermeldung.
Wie kann ich sicherstellen dass bei Betätigung einer der Befehlsschaltflächen immer auf das zugehörige Tabellenblatt zugegriffen wird?
mfg
reiner

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Berechnung mit falschem Tabellenblatt
09.10.2013 09:27:02
selli
hallo reiner,
du musst in deinem vba code das blatt, in dem berechnet wird genau benennen.
vermutlich steht dort überall "activesheet". dadurch werden die berechnungen im aktiven blatt vorgenommen. (sagt der name ja auch schon)
(ich mache dateien aus dem netz nur ungern bis gar nicht auf (vba kann mehr als man denkt)) kann deshalb nicht genauer antworten, ist aber ein ansatz, dem nachgegangen werden kann.
gruß
selli

AW: Berechnung mit falschem Tabellenblatt
09.10.2013 09:36:19
Erich
Hi Reiner,
wenn du möchtest, dass die Anweisungen in der UF nur auf ein bestimmtes Tabellenblatt wirken sollen,
musst du das VBA auch mitteilen, vielleicht so:

Option Explicit            ' immer zu empfehlen
Private Sub CommandButton1_Click()
With ThisWorkbook.Sheets("Tabelle1").Cells(1, 3)
.FormulaR1C1 = "=SUM(RC[-2]:RC[-1])"
Label1.Caption = .Value
End With
End Sub
Private Sub CommandButton2_Click()
ThisWorkbook.Sheets("Tabelle1").Cells(1, 3).ClearContents
Label1.Caption = ""
End Sub
Nicht ganz einsichtig war auch, dass du die betreffende Zelle mal mit "ActiveCell",
mal mit Range("C1") ansprichst. Ist immer C1 aktiv?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Berechnung mit falschem Tabellenblatt
09.10.2013 10:01:02
reiner
hallo Erich,
vielen dank für den Tipp; da es sich hier nur um eine Beispieldatei handelt ist es mir gar nicht aufgefallen das die betreffende Zellen mal mit "ActiveCell", mal mit Range("C1") angesprochen waren, das ist hier auch nicht entscheidend.
Grundsätzlich funktioniert dein Vorschlag, allerdings erscheint es mir wichtig auch den Namen der Arbeitsmappe im Makro-Code einzufügen, da der Name des Tabellenblatts in unterschiedlichen Mappen vorkommen kann.
mfg
reiner

nicht ganz
09.10.2013 10:07:44
Erich
Hi Reiner,
danke für deine Rückmeldung!
"wichtig auch den Namen der Arbeitsmappe im Makro-Code einzufügen, da der Name des Tabellenblatts
in unterschiedlichen Mappen vorkommen kann"
Das sehe ich nicht so. Die Mappe ist mit "ThisWorkbook" eindeutig bezeichnet als die Mappe, in der der Code steht.
Das war von dir so gewünscht.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: nicht ganz
09.10.2013 11:17:47
reiner
hallo Erich,
ich habe deinen Vorschlag in den Code eingefügt; die zugehörige Datei mit dem Tabellenblatt "Tabelle1" heißt auf meinem PC: "Mappe2.xls"; das funktioniert auch alles wunderbar.
Öffne ich eine weitere Datei erhält diese den Namen (z.B.) "Mappe3.xls". Nun liegt das leere Tabellenblatt "Tabelle1" von "Mappe3.xls" im sichtbaren Bildschirmbereich direkt unter der UF.
Wenn ich die Schaltfläche "Berechnen" betätige, greift das Makro aus "Mappe2.xls" auf "Tabelle1" von "Mappe3.xls" zu und findet dort aber keine Werte zum Berechnen; aus diesem Grund halte ich es für angebracht den Dateinamen ebenfalls anzugeben.
Hast du denn diese kleine Makro einmal auf deinem PC ausgeführt? Greift das Makro immer auf das eine definierte Tabellenblatt zu, egal welche andere Datei gerade geöffnet ist?
mfg
Reiner

Anzeige
Zweifel
09.10.2013 12:11:12
Erich
Hi Reiner,
"greift das Makro aus 'Mappe2.xls' auf 'Tabelle1' von 'Mappe3.xls' zu"
Das tun die beiden Click-Prozeduren, die ich gepostet habe, sicher nicht.
ThisWorkbook.Sheets("Tabelle1") ist immer das Blatt "Tabelle1" der Mappe, in der der Code steht -
und das ist bei dir in der "Mappe2.xls".
Läuft da vielleicht ein anderer Code? Bau in "meinen" Code doch mal z. B. eine Zeile
MsgBox ThisWorkbook.Name
ein.
"Hast du denn diese kleine Makro einmal auf deinem PC ausgeführt?"
Das hatte ich tatsächlich nicht getan, weil ich sicher war, dass das mit ThisWorkbook funzt.
Nun habe ich es doch getestet - und bin immer noch sicher. :-)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Zweifel
09.10.2013 12:28:03
reiner
hallo Erich,
ich gebe dir Recht, das Makro greift immer auf Mappe2.xls zu, beim Einfügen des Codes ist ein Fehler unterlaufen.
Wie lässt sich denn bei Betätigung der Schaltfläche das Tabellenblatt mit den Berechnungswerten "nach oben" (d.h. sichtbar unter die UF) legen?
mfg
reiner

Activate
09.10.2013 13:16:32
Erich
Hi Reiner,
da brauchst du nur die Mappe und das Blatt zu aktivieren:

Private Sub CommandButton1_Click()
With ThisWorkbook
.Activate
With .Sheets("Tabelle1")
.Activate
With .Cells(1, 3)
.FormulaR1C1 = "=SUM(RC[-2]:RC[-1])"
Label1.Caption = .Value
End With
End With
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Activate
09.10.2013 13:22:19
reiner
danke Erich

AW: Berechnung mit falschem Tabellenblatt
09.10.2013 10:01:15
reiner
hallo Erich,
vielen dank für den Tipp; da es sich hier nur um eine Beispieldatei handelt ist es mir gar nicht aufgefallen das die betreffende Zellen mal mit "ActiveCell", mal mit Range("C1") angesprochen waren, das ist hier auch nicht entscheidend.
Grundsätzlich funktioniert dein Vorschlag, allerdings erscheint es mir wichtig auch den Namen der Arbeitsmappe im Makro-Code einzufügen, da der Name des Tabellenblatts in unterschiedlichen Mappen vorkommen kann.
mfg
reiner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige