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.

Übungsaufgabe Ausgabe der Adresse in nichtzusammenhängendem Zellbereich
#1
Hallo Leute,

bräuchte zu Übungszwecken eure Hilfe. Ich habe folgenden Code:
Code:
Sub Auswahl_Abarbeiten()
Dim i As Integer

Range("A1:A2,C3,E4").Select
If Selection Is Nothing Then Exit Sub

For i = 1 To Selection.Cells.Count
'Welcher Code muss hier stehen, damit nacheinander die einzelnen Adressen aus dem
'nicht zusammenhängenden Zellbereich erscheinen, also Adresse A1, A2, C3, E4
debug.print ????
Next i


End Sub
Welcher Code muss ich in der For-Schleife eingeben, damit nacheinander die einzelnen Adressen der Zellen aus dem ausgewählten Zellbereich erscheinen?
Antworten Top
#2
Hallo Julia!
Ich würde einzelne Range-Objekte (Zellen) im größeren Range-Objekt abklappern:

Sub Auswahl_Abarbeiten()
   Dim rng As Range, Zelle As Range
   Set rng = Range("A1:A2,C3,E4")
   For Each Zelle In rng
      Debug.Print Zelle.Address
   Next
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#3
Hallo Ralf,

daran habe ich auch schon gedacht. Aber das Ganze ist eine Übungsaufgabe und
der Code soll nur innerhalb der For- Schleife verändert werden. Aber schon mal vielen Dank
für deine Unterstützung.
Antworten Top
#4
Hi Julia!
Gestatte mir die Frage:
Was ist das für ein Buch / eine Bildungseinrichtung, die mit .Select, Selection und einem vollkommen überflüssigem Exit Sub arbeitet?

Debug.Print Selection(i).Address
oder
Debug.Print Selection.cells(i).Address
funktionieren jedenfalls nicht.

Stelle doch mal die Aufgabe im Wortlaut hier rein.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
Hallo,

bitte vergiß den unglücklichen Exit Sub Befehl. Ansonsten ist es eine Uni-Aufzeichnung. Es soll eben eine Alternative zu dem  sonst üblichen For Each entwickelt werden. Und ja debug.Print  Selection.Cells(i).Address funktioniert nicht. So weit waren wir leider auch schon.
Antworten Top
#6
Hi!
Als rein sportliche Herausforderung mal mit zwei verschachtelten For … To Schleifen (als Dienst an die Wissenschaft  :21: ).
(Schließlich muss ja nicht alles Sinn machen)

Sub Auswahl_Abarbeiten2()
Dim i As Integer, k As Integer, rng As Range

   Set rng = Range("A1:A2,C3,E4")
   For k = 1 To rng.Areas.Count
      For i = 1 To rng.Areas(k).Cells.Count
         Debug.Print rng.Areas(k).Cells(i).Address
      Next i
   Next k

End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • juliatoll
Antworten Top
#7
Code:
Sub M_snb()
   Cells(10, 1).Resize(, 4) = [transpose(choose(row(1:4),A1,A2,C3,E4))]

   Cells(12, 1).Resize(, 4) = Array([A1], [A2], [C3], [E4])

   For j = 1 To UsedRange.Cells.Count
     If Not Intersect(UsedRange.Cells(j), Range("A1:A2,C3,E4")) Is Nothing Then c00 = c00 & "_" & Intersect(UsedRange.Cells(j), Range("A1:A2,C3,E4")).Value
   Next
  
   Cells(14, 1).Resize(, 4) = Split(Mid(c00, 2), "_")
End Sub
Antworten Top
#8
(26.01.2016, 20:57)snb schrieb:
Code:
Sub M_snb()
  Cells(10, 1).Resize(, 4) = [transpose(choose(row(1:4),A1,A2,C3,E4))]

  Cells(12, 1).Resize(, 4) = Array([A1], [A2], [C3], [E4])

  For j = 1 To UsedRange.Cells.Count
    If Not Intersect(UsedRange.Cells(j), Range("A1:A2,C3,E4")) Is Nothing Then c00 = c00 & "_" & Intersect(UsedRange.Cells(j), Range("A1:A2,C3,E4")).Value
  Next
 
  Cells(14, 1).Resize(, 4) = Split(Mid(c00, 2), "_")
End Sub

Hallo,

dein Code funktioniert nicht. Der Compiler meldet bei mir stets Objekt erforderlich. Könntest du deine vielleicht nochmal etwas überarbeiten.
Antworten Top
#9
@Wulfi

Erstelle deine Fehler erst bitte.
Antworten Top
#10
Hallöchen,

jeder sollte seine Fehler selber erstellen Smile

Hallo Julia,

ergänze bitte jedes UsedRange so:

ActiveSheet.UsedRange
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


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