Adress-Parameter in Range .Select Anweisung.

Bild

Betrifft: Adress-Parameter in Range .Select Anweisung. von: Horst
Geschrieben am: 22.03.2005 13:31:12

Hallo liebe VBA Experten,
wieder mal eine Frage vom Anfänger:
Bei folgender Anweisung bekomme ich diese Fehlermeldung (FM):
"Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft"

Dim EZ As Long 'Erste Zeile
Dim LZ As Long 'Letzte Zeile
Range("A" & EZ, "A" & LZ, "I" & EZ, "K" & LZ).Select '<-- Bezug der FM
'--> Beispiel mit Direktadressen: Range("A11:A17, I11:K17").Select
Selection.ClearContents

Ich möchte damit zwei verschiedene Bereich gleichzeitig selektieren.
Mit einem Adresspaar funktioniert's, bei mehreren nicht. Welches Zeichen gehört zwischen die beiden Adresspaare ?

Leider habe ich dazu nichts gefunde, weiß aber auch nicht unter welchem Begriff ich suchen sollte.
Kann mir jemand verraten, wie eine Range-Anweisung mit mehreren Parametern aussehen muss ? Das würde mir wieder ein Stück weiterhelfen.

Gruß
Horst

Bild


Betrifft: AW: Adress-Parameter in Range .Select Anweisung. von: Tobias Marx
Geschrieben am: 22.03.2005 13:36:12

Servus!

Range("A" & EZ & ":A" & LZ & ", I" & EZ & ":K" & LZ).Select

Gruss

Tobias


Bild


Betrifft: AW: Adress-Parameter in Range .Select Anweisung. von: Horst
Geschrieben am: 22.03.2005 13:49:32

Hallo Tobias,
das ging aber schnell ! Das funktioniert prima.
Vielen Dank für Deine Hilfe.
Hast Du evtl. noch einen Tipp für mich, wo man im Internet solche Syntax Probleme lösen kann ?

Gruß,
Horst


Bild


Betrifft: AW: Adress-Parameter in Range .Select Anweisung. von: Tobias Marx
Geschrieben am: 22.03.2005 13:59:24

Servus!

Wo man im Internet solche Probleme loesen kann, weiss ich nicht, aber ich kann versuchen, dir grundsaetzlich zu erklaeren, wie das funktioniert.
Dazu sind folgende Zeichen wichtig:

& - Das Verknuepfungszeichen
" - Gaensefuesschen als Anfangs- und Endzeichen einer Konstante

Nun ist das Ganze eiegntlich recht einfach, ich wills dir an einem kleinen Beispiel erlaeutern:

Du willst z.B. in Spalte A die Zellen 1 bis 20 nacheinander markieren, und das per VBA.
Am besten loest du das dann zum lernen ueber eine for...next-Schleife:

Sub lernen()
  For i = 1 to 20
  Range("A" & i).Select
  'Diese Anweisung oben sagt, nimm Spalte A (das "A" oben) und setze den Wert von i
  'hinzu (also, je nachdem wie oft schon i genommen wurde, irgendwas zwischen 1 und 20)
  'Also wuerde z.B. beim zweiten i als Klartext dastehen Range("A2").Select
  'Nur eben, dass hier von 1-20 durchgegangen wird.
  Next i
End Sub


So kannst du dann auch komplexere Sachen durchfuehren, wie z.B. einen Bereich markieren.

Sub Bereich()
  i = 20
  k = 50
  Range("A" & i & ":"C" & k).Select
  'Hier wird der Bereich zwischen A20 und C50 markiert, also entsprechend einer
  'Klartextanweisung Range("A20:C50").Select
End Sub


So kann man das - wie du in deiner Frage - halt noch ewig weiterspinnen, mehrere Bereiche markieren etc...

Ich hoffe, du konntest damit was anfangen.

Gruss

Tobias


Bild


Betrifft: AW: Adress-Parameter in Range .Select Anweisung. von: Horst
Geschrieben am: 22.03.2005 14:09:12

Hallo Tobias, hallo Martin,
das ist ja sehr ausführlich. Ich werd' mir das mal "reinziehen". Und mein Programm läuft inzwischen auch schon.
Nochmals vielen Dank für Eure Hilfe !
Gruß,
Horst


Bild


Betrifft: AW: Adress-Parameter in Range .Select Anweisung. von: Martin Beck
Geschrieben am: 22.03.2005 14:01:44

Hallo Horst,

in Schleifen etc. ist Cells einfacher als Range und mit Union kann man getrennte Bereiche "zusammenfassen". Beispiel:

Sub test()
Dim EZ As Long 'Erste Zeile
Dim LZ As Long 'Letzte Zeile
Dim Mehrfachbereich As Range
Set Mehrfachbereich = Application.Union(Range(Cells(EZ, 1), Cells(LZ, 1)), Range(Cells(EZ, 9), Cells(LZ, 9)))
Mehrfachbereich.ClearContents
End Sub


Gruß
Martin Beck


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Makro verhindern wenn Zelle nicht leer"