Clever-Excel-Forum

Normale Version: Range Indirect
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,
nachdem ich den halben Vormittag Foren nach Hinweisen durchsucht habe, meine Anweisung aber immernoch nicht funktioniert, möchte ich doch um Hilfe bitten. Wo ist mein Fehler?

Range("INDIRECT((""H" & I1 & """))").Select

Mir wird angezeigt, Fehler beim Kompilieren: Variable nicht definiert. Dabei wird I1 markiert. Aber das ist doch gar keine Variable, sondern eine Zelle...

Vielen Dank schonmal und einen schönen Feiertag
Blesbie
Hallo Blesbie,

in VBA braucht man nicht die Excelfunktion INDIREKT(),
da man Bezüge entsprechend direkt erstellen kann.

Bei Deiner Zeile dann so:

Code:
Range("H" & Range("I1").Value).Select

Gruß Uwe
Danke Smile Vielleicht noch eine Frage hinterher. Die Variante für eine Zelle klappt prima, aber bei mehreren haperts.

Range("H3:""H" & Range("""I1""").Value"").Select

Was ist diesmal zu ändern?

LG
Blesbie
Hallo Blesbie,

na dann halt einfach

Range("H3:H" & Range("I1").Value).Select ;)

Gruß Uwe
Big Grin Warum ist das denn so einfach und fliegt einem dennoch nicht zu??
Danke nochmal Smile
Falls du noch Lust hast, mir steigen schon wieder Rauchwölkchen aus den Ohren. Ich hätte drei Ideen, wie ich es umsetzen kann, dass beide Werte indirekt benannt werden, aber natürlich funktioniert keine^^


Range("H & Range("I1").Value :H" & Range("I2").Value).Select

Range("H:H" & Range("I1").Value & Range("I2").Value).Select

Range(Range("I1").Value & "H:H" & Range("I2").Value).Select

Allen, die dafür ein logisches Gespür haben, Respekt zollende Grüße
Blesbie
Moin,

na, dann versuche es mal so:
Code:
Range("H" & Range("I1").Value & ":H" & Range("I2").Value).Select

... wobei das Select hier so überflüssig ist wie ein Kropf :s (wie auch sonst fast immer).

aber versuche es doch einmal mit der VBA-Anweisung WorksheetFunction, wenn du mal nicht weiter kommst. Bei sehr vielen Excel-Funktionen kommst du da weiter, aber bei Indirect (oder auch mit k geschrieben) wirst du nicht fündig. ;)
Hallo Blesbie,

das erinnert mich an meinen Einstieg in die Makroprogrammierung (VBA).
Ich bin schier verzweifelt mit den Bereichszuweisungen etc., aber damals
gab es (noch) kein Internet. [Bild: sm12.gif]

Hier mal ein Makro mit verschiedenen Varianten:

Code:
Sub BereichsZuweisungPerZelleninhalte()
  Range("I1").Value = 5 'für Zeile 5
  Range("I2").Value = 8 'für Zeile 8
  'Spalte H entspricht Spaltennummer 8
  Cells(1, 8).Select
  
  'für eine Zelle in A1-Schreibweise, Spalte hart codiert
  Range("H" & Range("I1").Value).Select
  Stop
  Range("H1").Select
  Stop
  'für eine Zelle in Z1S1-Schreibweise, also (Zeile, Spalte), Spalte hart codiert
  Cells(Range("I2").Value, 8).Select
  Stop
  Cells(1, 8).Select
  'für einen Bereich in A1-Schreibweise, Spalte hart codiert
  Range("H" & Range("I1").Value & ":H" & Range("I2").Value).Select
  Stop
  Range("H1").Select
  Stop
  'für einen Bereich in Z1S1-Schreibweise, also (Zeile, Spalte), Spalte hart codiert
  Range(Cells(Range("I1").Value, 8), Cells(Range("I2").Value, 8)).Select
  Stop
  Cells(1, 8).Select
End Sub

Und lass Dich nicht beirren von Beiträgen wie hier von Günther.
Zum Testen ist Select eine gute Methode, um erst einmal ein Gefühl dafür zu bekommen.
Im späteren Einsatz ist es aber tatsächlich (meistens) nicht nötig. Performance (2) - Select Activate Bremsen und ein Beispiel

Gruß Uwe
Boah, danke für die Mühe!

Und das mit dem Select... Ich finde ehrlich gesagt bisher, dass es den ganzen Code sehr schön übersichtlich macht. Vielleicht ändert sich das noch, aber:
Zelle 1 auswählen
ihr eine Formel zuweisen
Zelle 2 auswählen
ihr eine Formel zuweisen.

Liest sich schön einfach, ist nur natürlich recht lang, aber das ist mir bisher vollkommen egal.

Nun ganz fleißig eure Hilfen anwendende Grüße :05: und euch einen schönen Abend
Blesbie
... in Sachen "Select"

@ Uwe: Du hast ja auch schon angedeutet, dass das eine unnötige Bremse ist. Und ich vertrete ganz klar die Meinung, dass solch eine Aussage wie "Zum Testen ist Select eine gute Methode, um erst einmal ein Gefühl dafür zu bekommen." einfach unprofessionell ist. Einem Einsteiger gegenüber, der VBA "vernünftig" lernen sollte, empfinde ich so etwas seitens eines gestandenen VBA-Anwenders als nicht verantwortungsbewusst.

@ Blesbie: OK, es sieht erst einmal übersichtlicher aus. Dennoch weiß ich aus eigener Erfahrung, dass es ungemein schwer ist, sich "Unarten" abzugewöhnen, wenn sie einmal Gewohnheit geworden sind. Ich räume auch ein, dass der Makrorecorder diesen Blödsinn auch zum Code macht, aber das ist nicht das Maß der Dinge. Wenn dich ein aus meiner Sicht überzeugender Vergleich Geschwindigkeit) interessiert: Schau mal bei Excel-ist-sexy nach, dann weißt du gewiss, was ich meine. Und der angepasste Code ist IMHO genau so gut lesbar ...

So, für mich war's das in diesem Thread.
Seiten: 1 2