Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Range Indirect
#1
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
Antworten Top
#2
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Blesbie
Antworten Top
#3
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
Antworten Top
#4
Hallo Blesbie,

na dann halt einfach

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

Gruß Uwe
Antworten Top
#5
Big Grin Warum ist das denn so einfach und fliegt einem dennoch nicht zu??
Danke nochmal Smile
Antworten Top
#6
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
Antworten Top
#7
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. ;)
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
[-] Folgende(r) 1 Nutzer sagt Danke an GMG-CC für diesen Beitrag:
  • Blesbie
Antworten Top
#8
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
Antworten Top
#9
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
Antworten Top
#10
... 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.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste