Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1188to1192
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

Koordinaten per VBA suchen

Koordinaten per VBA suchen
ilka
Guten Tag,
im Tabellenblatt 1 einer Mappe sind die Daten im Zellbereich
b3:h18 gespeichert.
Es sollen nun die 3 und die 2 für linke obere Zelladresse und
die 18 und die 8 für die rechte untere Zelladresse mit VAB ermittelt werden.
Gibt es dafür Funktionen? Wie sieht dafür eine Lösung aus?
Über alle Hilfen würde ich mich sehr freuen.
Gruß
Ilka Maria

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Koordinaten per VBA suchen
29.11.2010 11:56:27
Rudi
Hallo,
z.B.
Sub tt()
Dim rBereich As Range, Z1 As Long, S1 As Long, Z2 As Long, S2 As Long
Set rBereich = Range("B3:H18")
With rBereich
Z1 = .Row
S1 = .Column
Z2 = .Row + .Rows.Count - 1
S2 = .Column + .Columns.Count - 1
End With
End Sub

Gruß
Rudi
Eine Zusatzfrage
29.11.2010 12:15:58
ilka
Hallo Rudi,
Dein Programm klappt wunderbar. Vielen Dank für Deine Hilfe.
Nun habe ich noch eine Zusatzfrage:
Wie wandelt man zB. 8 in H um, wie 31 in AE.
Findest Du Zeit für eine weitere Antwort?
Ich würde mich sehr freuen.
Gruß
Ilka Maria
AW: Eine Zusatzfrage
29.11.2010 12:29:41
Rudi
Hallo,
Wie wandelt man zB. 8 in H um, wie 31 in AE

wozu?
Anstatt Range("H1") kannst du auch Cells(1,8) schreiben, bzw.
Range("H1:AE10") entspr. Range(Cells(1,8), Cells(10,31))
Gruß
Rudi
Anzeige
Korrektur
29.11.2010 13:07:35
ilka
Hallo Rudi,
Du hast vollkommen recht. War von mir nicht durchdacht, sorry.
Nun habe ich bemerkt, dass ich in meiner ersten Frage 2 entscheidende Zeichen vergessen habe.
"im Tabellenblatt 1 einer Mappe sind die Daten im Zellbereich
zB b3:h18 gespeichert."
Das heißt die Position des Zellbereichs liegt sozusagen nicht fest, die 4 Werte sollen gesucht werden.
Ich komme damit nicht klar.
Wie sähe dann da die Lösung aus?
Hoffentlich hast Du noch Lust, Dich dieser Frage anzunehmen. Es ist wirklich ärgerlich, dass ich zB vergessen hatte.
Ich würde mich sehr freuen.
Gruß
Ilka Maria
Anzeige
AW: Korrektur
29.11.2010 13:18:21
Rudi
Hallo,
versuchs mal so:
Sub tt()
Dim Z1 As Long, S1 As Long, Z2 As Long, S2 As Long
With ActiveSheet.UsedRange
Z1 = .Row
S1 = .Column
Z2 = .Row + .Rows.Count - 1
S2 = .Column + .Columns.Count - 1
End With
End Sub

Allerding hat UsedRange auch seine Tücken.
Gruß
Rudi
AW: Korrektur 2
29.11.2010 13:25:11
ilka
Hallo Rudi,
ich danke Dir für diese Lösung.
Used Range sollte man nicht verwenden, also auf irgendeine andere (ursprünglichere?) Weise die 4 Werte ermitteln.
Ich komme nicht drauf. Und Du?
Gruß
Ilka Maria
du solltest dich ...
29.11.2010 13:50:40
Rudi
Hallo,
mal genauer auslassen.
Gruß
Rudi
Anzeige
Ist es so präziser?
29.11.2010 14:18:37
ilka
Hallo Rudi,
die Aufgabe lautet:
Es sollen die ZeilenNr und SpaltenNr eines lückenlosen Zellbereichs gefüllt mit Texten ermittelt werden, der irgendwo im Tabellenblatt1 liegt. Dabei soll Used Range nicht verwendet werden.
Nehmen wir an er läge zB im Bereich B3:H18 oder zB im Bereich C5: X21, dann sollen eben die 4 Werte ermittelt werden.
Ich hoffe, dass ich nunmehr an alles gedacht habe.
Wie geht man solch eine Aufgabe an?
Gruß
Ilka Maria
AW: Ist es so präziser?
29.11.2010 14:40:57
Rudi
Hallo,
das ist schon klarer. Klingt nach Hausaufgabe.
Sub ttx()
Dim rngDaten As Range
Dim Z1 As Long, S1 As Long, Z2 As Long, S2 As Long
Set rngDaten = Sheets(1).Cells.Find("*", LookIn:=xlValues).CurrentRegion
With rngDaten
Z1 = .Row
S1 = .Column
Z2 = .Row + .Rows.Count - 1
S2 = .Column + .Columns.Count - 1
End With
End Sub

Gruß
Rudi
Anzeige
Funktioniert, aber ...
29.11.2010 15:08:40
Ilka
Hallo Rudi,
die Lösung funktioniert einwandfrei: Vielen Dank.
Ich bin mir aber fast sicher, dass sie nicht akzeptiert wird.
Begründung: Diese Zeile
Set rngDaten = Sheets(1).Cells.Find("*", LookIn:=xlValues).CurrentRegion
wurde bisher nicht vorgestellt und wenn ich sie richtig interpretiere ist da ja ein Suchbefehl enthalten.
Ich denke man soll die Lösung reduzieren auf eine Schleifenlösung (ist behandelt) mit der wohl festgestellt werden muss, in welcher Zelle sich der erste Inhalt (Zelle ""?) befindet.
Wenn man diese Zelle gefunden hat, sollte es möglich sein, die untere rechte Zelle des Bereichs zu finden.
Seit gestern beschäftige ich mich mit dieser Aufgabe, deren Sinn mir immer fragwürdiger wird.
Hast Du noch einen Tipp, eine Lösung?
Gruß
Ilka Maria
Anzeige
AW: Funktioniert, aber ...
29.11.2010 15:37:27
Rudi
Hallo,
der Sinn kann nur darin bestehen, dass man Schleifen lernt.
Was primitiveres fällt mir nicht ein:
Sub tty()
Dim lngZeile As Long, lngSpalte As Long
Dim Z1 As Long, S1 As Long, Z2 As Long, S2 As Long
For lngZeile = 1 To 65536
For lngSpalte = 1 To 256
If Cells(lngZeile, lngSpalte)  "" Then
Z1 = lngZeile
S1 = lngSpalte
Exit For
End If
Next lngSpalte
If Z1 > 0 Then Exit For
Next lngZeile
For lngZeile = lngZeile To 65536
If Cells(lngZeile, S1) = "" Then
Z2 = lngZeile - 1
Exit For
End If
Next lngZeile
For lngSpalte = S1 To 256
If Cells(Z2, lngSpalte) = "" Then
S2 = lngSpalte - 1
Exit For
End If
Next lngSpalte
End Sub

Gruß
Rudi
Anzeige
Klappt eine Übertragung?
29.11.2010 17:58:00
ilka
Hallo Rudi,
ich danke Dir für diese Version.
Habe inzwischen kräftig getestet und alle Tests sind erfolgreich gewesen.
Den Test bei dem es darum ging die Werte zu ermitteln, wenn die eingetragenen Werte in den untersten rechten Zellen stehen, steht noch aus. Die Laufzeit dürfte in diesem Fall recht hoch sein.
Überträgt man das Programm auf Excel 2007 so muss man doch die Schleifenendwerte ändern auf
1048576 und 16384 oder hat man noch weitere Änderungen vorzunehmen?
Reicht der Datentyp long für die Zahl 1048576?
Einen schönen Abend.
Gruß
Ilka Maria
sicher klappt das
29.11.2010 18:09:05
Rudi
Hallo,
du hast alles richtig erkannt.
Long reicht.
Gruß
Rudi
Anzeige
Tausend Dank
29.11.2010 18:17:06
ilka
Hallo Rudi,
ich danke Dir sehr für die zahlreichen Lösungen.
Es ist richtig: gesucht ist die allereinfachste Lösung.
Ich denke den letzten Test führe ich an einer 2003-Version durch.
Vielen Dank und einen schönen Abend.
Gruß
Ilka Maria

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige