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"