Wichtig! Wichtig!

Bild

Betrifft: Wichtig! Wichtig! von: Johannis Paulix
Geschrieben am: 09.03.2005 08:47:00

HUHU!

Hey Leute! Ein Problem hat sich gerade von mir selber beheben lassen!

Nun das zweite! Also! Ich habe folgendes in meinem Programm stehen:

Zeile = ActiveCell.Row ' aktive Zelle
Bereich = Selection.Address(0, 0) ' markierter Bereich z.B. A2:A6
Worksheets!Tabelle2.Cells(1, 2) = Bereich ' In der Zelle soll der Bereich erscheinen (z.B. A1 = A2:A5)
Worksheets!Tabelle2.Cells(1, 1) = Zeile ' aktive Zelle wird auch ausgegeben in der Tabelle
a = CInt(Zeile) ' a ist = Zeile (z.B. A6 - also 6)
b = CInt(Mid(Bereich, 5, 1))

Und bei der Variable "b" liegt jetzt mein Problem! Ich möchte nun auch für die Variable den Wert aus meinem Bereich haben. Das heißt:

Bereich = A7:A12
a = 7
b = 12

Nun weiß ich aber nicht wie ich an die 12 für die Variable "b" kommen soll! Wenn ich den Bereich = A2:A8 habe, dann ist "a" laut meinen bisherigen Formeln = 2 und "b" wäre = 1 obwohl es 12 sein müsste!!

Wie mache ich es, das ich egeal ob das nun A2:A8 oder A2:A12 stehte, er mir den richtigen wert für "b" liefert!

Bitte um Hilfe!

MfG Grevi

Bild


Betrifft: AW: Wichtig! Wichtig! von: MichaV
Geschrieben am: 09.03.2005 09:21:00

Hi,

was Du suchst ist right(Adresse,len(Adresse)-instrrev(Adresse,":")). Das ergibt den String neben dem ":", also B12 (wenn Adresse "A1:B12" ist).

Ansonsten kannst Du die oberste markierte Zeile mit Selection.Row und die Anzahl der markierten Zeile mit Selection.Rows.Count ermitteln. Wenn Du beides Addierst, hast Du die letzte markierte Zeile. Das ist, glaub ich, was Du willst.
Gruß!


Bild


Betrifft: AW: Wichtig! Wichtig! von: Johannis Paulix
Geschrieben am: 09.03.2005 09:36:01

HUHU!

Danke für die Antwort! Ja das ist schon ungefähr das was ich brauche! Kann das nur nicht ganz ausführen! Was muss ich den in die Funktion einsetzen?

iMax = Right(Bereich, Len(Bereich) - Instrrev(Bereich, ":"))

oder wie muss ich das schreiben! Verstehe ich nicht ganz!

MfG Grevi


Bild


Betrifft: AW: Wichtig! Wichtig! von: MichaV
Geschrieben am: 09.03.2005 09:42:01

Hi,

hast Du es denn mal ausprobiert?

Micha


Bild


Betrifft: AW: Wichtig! Wichtig! von: Johannis Paulix
Geschrieben am: 09.03.2005 09:48:06

HUHU!

Also ausprobiert habe ich es! Ich habe folgende Schritte gemacht:

1. In der Tabelle den Bereich markiert.
2. Programm gestartet

Ich habe die Funktion folgender Maßen geschrieben.

Private Sub cmb_Starten_Click()

Dim InventurNr As String
Dim LogischerName As String
Dim IP_Adresse As String
Dim Speicher As String
Dim System As String
Dim iMax As Integer
Dim i As Integer
Dim FileNum As String
Dim Bereich As String
Dim Zeile As Integer
Dim Spalte As Integer
Dim a As Integer

Zeile = ActiveCell.Row
Bereich = Selection.Address(0, 0)
Worksheets!Tabelle2.Cells(1, 2) = Bereich
Worksheets!Tabelle2.Cells(1, 1) = Zeile
i = CInt(Zeile)
iMax = Right(Bereich, Len(Bereich) - InStr(Bereich, ":"))

.....
.....
.....

Bereich = Markierter Bereich in der Tabelle!

Wenn ich das Programm jetz ausführe, dann zeigt er mir "Typen unverträglich" als Fehler an! Woran kann das liegen? Und ist die Funktion so überhaupt richtig geschrieben?

MfG Grevi


Bild


Betrifft: warum..... von: Volker
Geschrieben am: 09.03.2005 09:52:31

bleibst Du nicht im alten thread. ist doch alles ein Thema.

Ich hab jetzt hoffenlich geschnallt, wo Dein Schuh drückt.
Du sucht den absoluten Spalten- und Zeilenindex der rechten, unteren Ecke deiner Markierung.
Deinen Umweg über die Adresse in einer Zelle und dann mid(cells(x,y)..bla,bla ist überflüssig.


Bsp.:
markiert ist B3:F6

linke,obere Ecke

zeile1=selection.row 'ergibt 3
spalte1=selection.column 'ergibt 2

Anzahl selektierter Zeilen/Spalten

zeile2=selection.row.count 'ergibt 4
spalte2=selection.column.count 'ergibt 5

linke/obere Ecke + Anzahl -1 ergibt absoluten Zeilen-/Spaltenindex der rechten, unteren Ecke:

zeile3=zeile1 + zeile2 -1
spalte33=spalte1 + spalte 2 -1

Das Forum lebt auch von Rückmeldungen, als gib doch mal laut, ob nun alles klar ist.

Gruß
Volker


Bild


Betrifft: AW: warum..... von: Johannis Paulix
Geschrieben am: 09.03.2005 10:00:13

HUHU Volker!

Sorry habe den Eintrag von dir nicht gelsen! Also ich verstehe nicht ganz was du meinst! Hier noch mal mein Problem:

Ich markiere einen Bereich in einer Tabelle: z.B. A2:A8
Nun habe ich 2 Variablen! "a" und "b"

Der Variable "a" soll nun der Wert der ersten markierten Zelle sein (also 2 (wegen A"2") und der Variable "b" soll der Wert der letzten im markierten Bereich markierten Zelle sein (also 8 (wegen A"8")

Der markierte Bereich wird mit in eine Zelle ausgegeben. In der steht dann z.B. A2:A8

Nun habe ich der Variable "a" schon die 2 zugewiesen. Jetz fehlt mir nur noch, das ich der Variable "b" den Wert zu Weise! In diesem Beispiel dann 8!

Wenn jetzt allerdings der Bereich A2:A14 ist, dann muss mir die Funktion trotzdem den Wert ausgeben. Hier dann 14!

Verstehst du wie ich es meine?

MfG Grevi


Bild


Betrifft: Frage hat sich erledigt! Danke an alle! von: Johannis Paulix
Geschrieben am: 09.03.2005 10:05:34

Hey Leute!!

Ich habe das Problem gelöst!

Danke an alle Helfer

MfG Grevi


Bild


Betrifft: AW: warum..... von: MichaV
Geschrieben am: 09.03.2005 10:11:01

Hi,

Du hast bisher schon mehrere Hinweise erhalten, daß es einfacher mit selection.row und selection.row.count usw. geht.

CInt("A2") ist einfach nicht möglich, daher der Fehler. Du müsstest wieder das A von der 2 separieren, aber es kann ja auch ein AA sein! Also wieder eine Abfrage. Nur wozu Deine Umwege? Versuch einfach mal, von Deinem Lösungsweg wegzukommen. Du wirst sehen, daß es mit den Hinweisen von den Antwortern besser gehen wird.

Gruß und Frohes Schaffen! Micha


Bild


Betrifft: Na also.., gern geschehen von: Volker
Geschrieben am: 09.03.2005 10:16:37

.


Bild


Betrifft: Warum einfach wenn's auch umständlich geht von: Martin Beck
Geschrieben am: 09.03.2005 14:27:06

Hallo,

wohl eher für's Archiv, warum nicht so:

a = Selection(1).Row
b = Selection(Selection.Cells.Count).Row

Gruß
Martin Beck


 Bild

Beiträge aus den Excel-Beispielen zum Thema "AutoFilter mit leeren Zeilen"