Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1228to1232
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Range ermitteln

Range ermitteln
braleta
Hallo Excel-ianer,
kann ich eine Range in VBA rechnerisch ermitteln, wenn ich die erste Zelle kenne und dann nur noch Zahlen habe?
Was ich machen möchte:
ich möchte dynamisch per VBA einen Rahmen um Zellbereiche legen, von dem ich aber nur die Ecke oben links kenne und die Anzahl Zeilen und Spalten, die ich gerechnet habe.
Beispiel:
Ecke oben links ist "D5"
Zellen wagrecht = 28
Zellen senkrecht = 42
Wie ermittle ich die Ecke unten rechts?
Danke für eine Antwort
...braleta

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Range("D5").Resize(42,28) (owT)
10.09.2011 09:41:39
Erich
(owT):="ohne weiteren Text"
AW: Range ermitteln
10.09.2011 09:41:52
Josef

Hallo braleta,
da gibt es mehrere Möglichkeiten.
Am einfachsten.

Range("D5").Resize(42, 28)


« Gruß Sepp »

AW: Range ermitteln
10.09.2011 09:52:02
Matthias
Hallo
Vielleicht so ?

Sub berechne()
Dim Mycol, Myrow
Mycol = Range("D5").Column + 28
Myrow = Range("D5").Row + 42
MsgBox Cells(Myrow, Mycol).Address
Range("D5:" & Cells(Myrow, Mycol).Address).Select
End Sub
Gruß Matthias
Anzeige
Berichtigung
11.09.2011 10:12:50
Erich
Hi Matthias,
mit diesem Beitrag möchte ich verhindern helfen, dass später jemand meint,
deinen Code ("aus dem Herber-Archiv!") so verwenden zu können/sollen.
Er stimmt nämlich nicht. Und er ist umständlich. Und er ist unschön.
Er stimmt nicht, weil eine Zeile und eine Spalte zu viel ausgewählt werden. Das wird in "berechne1()" deutlich.
Er ist umständlich - die Lösung mit Resize ist einfach entscheidend besser.
Er ist unschön: Bei der Deklaration von Mycol, Myrow sollte man auf die Typangabe nicht verzichten.
Antworten hier im Forum werden leicht als vorbildhaft angesehen...
Und um nicht nur zu meckern, noch ein wenig Code:

Option Explicit
Sub berechne1()
Dim Mycol, Myrow
Mycol = Range("D5").Column + 28
Myrow = Range("D5").Row + 42
MsgBox Cells(Myrow, Mycol).Address
Range("D5:" & Cells(Myrow, Mycol).Address).Select
With Selection
MsgBox "Zeilen: " & .Rows.Count & " / Spalten: " & .Columns.Count & _
vbLf & "(Der Bereich sollte 42 Zellen hoch und 28 breit sein.)"
End With
End Sub
Sub berechne2()
Dim lngCol As Long, lngRow As Long
lngCol = Range("D5").Column - 1 + 28
lngRow = Range("D5").Row - 1 + 42
MsgBox Cells(lngRow, lngCol).Address
With Range(Cells(5, 4), Cells(lngRow, lngCol))
MsgBox "Zeilen: " & .Rows.Count & " / Spalten: " & .Columns.Count
End With
End Sub
Sub berechne3()
With Cells(5, 4).Resize(42, 28)
MsgBox "Zeilen: " & .Rows.Count & " / Spalten: " & .Columns.Count
End With
' und wenn nur die Zelle rechts unten gebraucht wird:
With Cells(5, 4).Offset(41, 27)
MsgBox "Rechts unten:" & vbLf & vbLf & _
"Zelle " & .Address & "  in Zeile " & .Row & " / Spalte " & .Column
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
P.S.: Nix für ungut - und noch eine schönen Sonntag!
Anzeige
@Erich
11.09.2011 10:37:20
Matthias
Hallo Erich
Im Grunde hast Du ja Recht. Resize ist einfacher und von mir aus auch schöner
Ich habs aber anders interpretiert als Du. Das ist der ganze Grund.
Sieh Dir dazu bitte meine Datei an.
Dann verstehst Du sofort wie ich die Frage verstanden habe
https://www.herber.de/bbs/user/76558.xls
Auch Dir einen schönen Sonntag
Gruß Matthias
AW: Range ermitteln
10.09.2011 14:07:48
braleta
Matthias, Josef, Erich,
ihr habt mir sehr geholfen, diesen Befehl kannte ich nicht, aber er ist toll und macht genau das, was ich brauche!
Herzlichen Dank ...bruno
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige