Microsoft Excel

Herbers Excel/VBA-Archiv

indirekt | Herbers Excel-Forum


Betrifft: indirekt von: gerd
Geschrieben am: 19.12.2009 09:45:52

Ich habe mit Indirekt Adressen in einem externen workbook angesprochen, wenn das workbook nicht offen ist kommt die Fehlermeldung #Bezug, kann man das lösen, ohne das wb zu öffnen. Grüße Gerd

  

Betrifft: AW: indirekt von: Hajo_Zi
Geschrieben am: 19.12.2009 09:49:42

Hallo Gerd,

NEIN. Nicht mit INDIREKT()

GrußformelHomepage


  

Betrifft: geht nur wenn offen... von: Tino
Geschrieben am: 19.12.2009 09:56:33

Hallo,
indirekte Bereichsverweise auf andere Dateien wie (Indirekt oder Bereich.Verschieben)
funktionieren nur wenn die Datei geöffnet ist, bei geschlossener Datei funktionieren nur die direkten Bezüge.

Sonst müsstest Du mit VBA an die Sache gehen.

Gruß Tino


  

Betrifft: hier eine VBA Version mit Function... von: Tino
Geschrieben am: 19.12.2009 10:43:51

Hallo,
hier mal was mit VBA.
In eine Modul kommt dieser Code

Private Declare Function SetTimer Lib "user32" (ByVal hWnd As _
Long, ByVal nIDEvent As Long, ByVal uElapse As Long, _
ByVal lpTimerFunc As Long) As Long
 
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As _
Long, ByVal nIDEvent As Long) As Long

Public varErgebnis As Variant, BerechneZelle As Range, strSubZiel$
Public hTimer As Long

Function IndirekterVerweis(strZiel$, rngAktBezug As Range)

If IsEmpty(varErgebnis) Then
 Set BerechneZelle = rngAktBezug
 strSubZiel = strZiel
 hTimer = SetTimer(0, 0, 10, AddressOf LeseWert)
 Exit Function
End If

IndirekterVerweis = varErgebnis
End Function

Sub LeseWert()
KillTimer 0, hTimer
varErgebnis = ExecuteExcel4Macro(strSubZiel)
BerechneZelle.FormulaLocal = BerechneZelle.FormulaLocal
Set BerechneZelle = Nothing
varErgebnis = Empty
strSubZiel = ""
End Sub
In eine Zelle schreibst Du diese Formel.
 A
1rot, grün, blau

Formeln der Tabelle
ZelleFormel
A1=IndirekterVerweis("'E:\1 Forum\[TestMehr.xls]Tabelle1'!R3C2";A1)


Erster Parameter ist die Indirekte Adresse zu der Datei (beachte R1C1 Schreibweise)
der zweite Wert ist die Zelle in der sich die Formel befindet.
Bei VBA Gut solltest Du aber schnell den Durchblick haben.

Gruß Tino


  

Betrifft: für A1 Schreibweise... von: Tino
Geschrieben am: 19.12.2009 10:54:01

Hallo,
wenn Du die Sub LeseWerte durch diese ersetzt,

Sub LeseWert()
Dim sZelle$
KillTimer 0, hTimer

'R1C1 Bezug erstellen 
sZelle = Right$(strSubZiel, Len(strSubZiel) - InStrRev(strSubZiel, "!"))
sZelle = Range(sZelle).Address(, , xlR1C1)
strSubZiel = Left$(strSubZiel, InStrRev(strSubZiel, "!")) & sZelle

varErgebnis = ExecuteExcel4Macro(strSubZiel)
BerechneZelle.FormulaLocal = BerechneZelle.FormulaLocal

Set BerechneZelle = Nothing
varErgebnis = Empty
strSubZiel = ""

End Sub
kannst Du auch die A1 Schreibweise verwenden.

 A
1rot, grün, blau

Formeln der Tabelle
ZelleFormel
A1=IndirekterVerweis("'E:\1 Forum\[TestMehr.xls]Tabelle1'!B3";A1)


Gruß Tino


  

Betrifft: Anmerkung ... von: Tino
Geschrieben am: 19.12.2009 14:50:00

Hallo,
dies ist aber nur für maximal zwei Zellen geeignet.
Besser ist es diese Informationen rein über VBA auszulesen,
dazu kann man ja auch die ExecuteExcel4Macro-Methode verwenden um die Datei nicht zu öffnen.
Wenn es sehr viele Daten sind, ist es aber besser die Datei zuvor zu öffnen um den Lesevorgang zu beschleunigen.

Gruß Tino


  

Betrifft: AW: Anmerkung ... von: gerd
Geschrieben am: 20.12.2009 14:37:22

Herzlichen Dank allen, es hilft !


Beiträge aus den Excel-Beispielen zum Thema "indirekt"