Registriert seit: 02.10.2014
Version(en): 2013
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Blesbie
Registriert seit: 02.10.2014
Version(en): 2013
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Blesbie,
na dann halt einfach
Range("H3:H" & Range("I1").Value).Select ;)
Gruß Uwe
Registriert seit: 02.10.2014
Version(en): 2013
Warum ist das denn so einfach und fliegt einem dennoch nicht zu?? Danke nochmal
Registriert seit: 02.10.2014
Version(en): 2013
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
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
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:1 Nutzer sagt Danke an GMG-CC für diesen Beitrag 28
• Blesbie
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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 BeispielGruß Uwe
Registriert seit: 02.10.2014
Version(en): 2013
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
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
03.10.2014, 23:18
(Dieser Beitrag wurde zuletzt bearbeitet: 03.10.2014, 23:28 von GMG-CC.)
... 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!
|