Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


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
to 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 Benutzer sagt Danke an Kuwer für diesen Beitrag:
Blesbie
to top
#3
Danke :-) 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
to top
#4
Hallo Blesbie,

na dann halt einfach

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

Gruß Uwe
to top
#5
:-D Warum ist das denn so einfach und fliegt einem dennoch nicht zu??
Danke nochmal :-)
to 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
to 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 Confused (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. Wink
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 Benutzer sagt Danke an GMG-CC für diesen Beitrag:
Blesbie
to 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. ?mage

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
to 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
to 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!
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  VBA Makro Befehl Range Kubababa 2 101 27.10.2016, 19:32
Letzter Beitrag: Gast 123
  Alternative für After := ActiveCell bei der Suche in einem Range-Objekt ChristaRohn 14 1.086 17.03.2016, 19:43
Letzter Beitrag: RPP63
  Excel: Datum in Range finden jeroenpunt14 1 349 25.02.2016, 16:30
Letzter Beitrag: shift-del
  Adress/Range MikroBongo 4 858 01.08.2015, 14:22
Letzter Beitrag: schauan

Gehe zu:


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