Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1244to1248
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

Zellinhalt der anderen Tabelle abfragen

Zellinhalt der anderen Tabelle abfragen
Helmut,
Hallo VBA Experten,
habe eine kurze frage.
Wenn ich mich in einer anderen Tabelle (außer "Rechnungen" s.u. befinde) kann ich wunderbar mit
ActiveCell = Sheets("Rechnungen").Range("B5")
den Zellinhalt in "Rechnungen" B5 abfragen. Nun möchte ich aber nicht immer eine bestimmte Zelle abfragen, sondern die, welche die aktive Zelle ist oder besser gesagt, war. Ich habe ja nun schon wieder die Seite gewechselt.
Mit z.B.
ActiveCell = Sheets("Rechnungen").ActiveCell
geht es leider nicht. Geht es überhaupt in diesem Fall nach diesem Schema?
Meine Recherche hat leider auch nichts konstruktives ergeben. Deshalb badanke ich mich an meine Helfer schon im voraus!
MfG
Helmut
ActiveCell.Address ...
31.12.2011 16:55:52
Matthias
Hi
Dim MyAddy$
MyAddy = ActiveCell.Address
ActiveCell.Value = Sheets("Rechnungen").Range(MyAddy)
Gruß Matthias
AW: ActiveCell.Address ...
31.12.2011 17:11:27
Helmut,
Danke Matthias, aber es will nicht klappen.
Nun dachte ich schon, dass du vielleicht die $ an den MyAddy vergessen hast, aber mit geht es auch nicht.
Woran könnte es liegen?
MfG
Helmut
AW: Ich glaub ich hab Dich eh falsch verstanden
31.12.2011 17:23:41
Helmut,
Hallo Matthias,
danke, das funst so, wie ich es brauche. Was besagt myaddy? Bei F1 wird mir da nichts angezeigt.
MfG
Helmut
Anzeige
Das ist eine Variable
31.12.2011 17:34:04
Matthias
Hallo Helmut
Das $-Zeichen hinter dem VariablenNamen bedeutet String
Man könnte auch schreiben
Public myaddy as String
myaddy ist einfach ein beliebiger Name für eine Variable.
Gruß Matthias
AW: Das ist eine Variable
31.12.2011 17:55:32
Helmut,
Aha, nun in deinem Beispiel kalppt alles wunderbar. Wenn ich den Makro in der "richtige Mappe" laufen lasse kommt die Fehlermeldung: Laufzeitfehler 1004 Anwendung oder objektdefinierter Fehler. Hab schon die Blätter um die es geht in dein Beisp. verschoben, aber bin leider noch nicht dahinter gekommen.
MfG
Helmut
Hast Du die Variante von Sepp schon probiert ?
31.12.2011 18:31:09
Sepp
Hallo
und wer soll denn wissen, warum es nicht klappt in Deiner Mappe.
Wenn das jemand testen soll, müsstest Du sie hier ...
https://www.herber.de/forum/file_upload.html
... hochladen.
Gruß Matthias
Anzeige
hast Du nur das Blatt gewechselt ...
31.12.2011 18:42:33
Matthias
Hallo
... ohne eine gefüllte Zelle anzuklicken?
Also es ist in "Berechnungen" die aktive Zelle leer?
Dann wechselst Du in Tabelle1 und machst den Doppelklick?
Das würde diesen Fehler auslösen
Könnte man so umgehen:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
ActiveCell.Value = Sheets("Rechnungen").Range(MyAddy)
End Sub


oder so:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If MyAddy  "" Then ActiveCell.Value = Sheets("Rechnungen").Range(MyAddy)
End Sub
Probier doch auch mal Sepp seinen Vorschlag aus.
Gruß Matthias
Anzeige
AW: hast Du nur das Blatt gewechselt ...
31.12.2011 18:59:50
Helmut,
Hallo Matthias,
ich habe nun doch Sepp's Code probiert und komme damit klar. Trotzdem danke und Guten Rutsch.
MfG
Helmut
AW: hast Du nur das Blatt gewechselt ...
02.01.2012 13:02:36
Helmut,
Hallo Matthias,
ein gesundes neues Jahr.
sorry, aber ich muss nochmal den alten Staub aufwirbeln. Mit Sepps Makro ist es das selbe wie mit deinem. In der Testmappe geht es, in der "Richtigen" nur mit Einschränkungen. Zum Hochladen ist sie allerdings zu groß.
Mache ich es so, dass ich alle Code (siehe unten) in die Rechnungen-Tabelle kopiere, dann läßt sich über "Sub Finde_MyAddy" der Zellinhalt abrufen. Setze ich "Sub Finde_MyAddy" außerhalb der Rechnungstabelle, wird übersprungen und es geht gleich ins End If.
Da Application.Run "Finde_MyAddy" aber so nicht in einen anderen Code integrierbar ist, habe ich ein Problem. Ich hab nun schon versucht den Tabellennamen mit davorzuschreiben, aber entweder falsch oder so etwas geht nicht. Falls es doch geht, kannst du mir zeigen, wie der Pfad richtig auszusehen hat?
MfG
Helmut
Dim MyAddy As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MyAddy = Target.Address
End Sub
Sub Finde_MyAddy
If MyAddy "" Then
ActiveCell.Value = Sheets("Rechnungen").Range(MyAddy)
End If
End Sub
Anzeige
AW: hast Du nur das Blatt gewechselt ...
03.01.2012 03:56:45
hary
Hallo Helmut
Setze nur diese Zeile in ein eigenes Modul.

Public MyAddy

Du brauchst eine Public Variable. Diese ist fuer alle Subs gueltig, ansonsten wird die variable nach End Sub wieder auf leer gesetzt. Und da hat Dein makro nix zum verarbeiten.
gruss hary
das hatte ich bereits erwähnt! ...
03.01.2012 08:31:50
Matthias
Hallo hary
und ...
in meiner geposteten Datei ist die Variable bereits als Public deklariert.
Am (31.12.2011 17:34:04) hatte ich das auch nochmal dargelegt!
https://www.herber.de/bbs/user/78152.xls
Gruß Matthias
Anzeige
AW: hast Du nur das Blatt gewechselt ...
03.01.2012 10:53:30
Helmut,
Hallo Hary, hallo Matthias,
es ist nicht so, dass ich es nicht so gemacht habe. Es wird einfach myaddy ignoriert. In der Testmappe geht es, in der anderen nicht. Nun gut. Bin selber draufgekommen, dass man - in meinem Fall Tabelle8.Find_myaddy - schreibt. Nun gehts auch. Weiß der Fuchs, warum es in dieser Mappe nur so geht.
MfG
Helmut
AW: Zellinhalt der anderen Tabelle abfragen
31.12.2011 16:59:26
Josef

Hallo Helmut,
logischerweise kann sich "ActiveCell" immer nur auf das aktive Tabellenblatt beziehen.
Eine Möglichkeit.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

'Tabellenmodul von "Rechnungen"
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Set rngActive = ActiveCell
End Sub


' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public rngActive As Range

Sub test()
  If Not rngActive Is Nothing Then ActiveCell = rngActive.Value
End Sub



« Gruß Sepp »

Anzeige
AW: Zellinhalt der anderen Tabelle abfragen
31.12.2011 19:01:04
Helmut,
Hallo Sepp,
danke, habe jetzt verstanden wie ich ihn einbauen muss. Geht! Super.
Guten Rutsch
Helmut

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige