Microsoft Excel

Herbers Excel/VBA-Archiv

Zellinhalt der anderen Tabelle abfragen | Herbers Excel-Forum


Betrifft: Zellinhalt der anderen Tabelle abfragen von: Helmut, M.
Geschrieben am: 31.12.2011 16:49:31

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

  

Betrifft: ActiveCell.Address ... von: Matthias L
Geschrieben am: 31.12.2011 16:55:52

Hi

Dim MyAddy$
MyAddy = ActiveCell.Address
ActiveCell.Value = Sheets("Rechnungen").Range(MyAddy)

Gruß Matthias


  

Betrifft: AW: ActiveCell.Address ... von: Helmut, M.
Geschrieben am: 31.12.2011 17:11:27

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


  

Betrifft: Ich glaub ich hab Dich eh falsch verstanden von: Matthias L
Geschrieben am: 31.12.2011 17:16:49

Hallo Helmut

Probier mal so:
https://www.herber.de/bbs/user/78152.xls

Gruß Matthias


  

Betrifft: AW: Ich glaub ich hab Dich eh falsch verstanden von: Helmut, M.
Geschrieben am: 31.12.2011 17:23:41

Hallo Matthias,

danke, das funst so, wie ich es brauche. Was besagt myaddy? Bei F1 wird mir da nichts angezeigt.

MfG
Helmut


  

Betrifft: Das ist eine Variable von: Matthias L
Geschrieben am: 31.12.2011 17:34:04

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


  

Betrifft: AW: Das ist eine Variable von: Helmut, M.
Geschrieben am: 31.12.2011 17:55:32

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


  

Betrifft: Hast Du die Variante von Sepp schon probiert ? von: Matthias L
Geschrieben am: 31.12.2011 18:31:09

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


  

Betrifft: hast Du nur das Blatt gewechselt ... von: Matthias L
Geschrieben am: 31.12.2011 18:42:33

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


  

Betrifft: AW: hast Du nur das Blatt gewechselt ... von: Helmut, M.
Geschrieben am: 31.12.2011 18:59:50

Hallo Matthias,

ich habe nun doch Sepp's Code probiert und komme damit klar. Trotzdem danke und Guten Rutsch.
MfG
Helmut


  

Betrifft: AW: hast Du nur das Blatt gewechselt ... von: Helmut, M.
Geschrieben am: 02.01.2012 13:02:36

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


  

Betrifft: AW: hast Du nur das Blatt gewechselt ... von: hary
Geschrieben am: 03.01.2012 03:56:45

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


  

Betrifft: das hatte ich bereits erwähnt! ... von: Matthias L
Geschrieben am: 03.01.2012 08:31:50

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


  

Betrifft: AW: hast Du nur das Blatt gewechselt ... von: Helmut, M.
Geschrieben am: 03.01.2012 10:53:30

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


  

Betrifft: AW: Zellinhalt der anderen Tabelle abfragen von: Josef Ehrensberger
Geschrieben am: 31.12.2011 16:59:26


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 »



  

Betrifft: AW: Zellinhalt der anderen Tabelle abfragen von: Helmut, M.
Geschrieben am: 31.12.2011 19:01:04

Hallo Sepp,

danke, habe jetzt verstanden wie ich ihn einbauen muss. Geht! Super.

Guten Rutsch
Helmut


Beiträge aus den Excel-Beispielen zum Thema "Zellinhalt der anderen Tabelle abfragen"