PDA

Vollständige Version anzeigen : Wie interpretiert man den RANGE-Befehl?


Mightymagic
25.09.2001, 08:08
Wie interpretiert man den RANGE-Befehl?

Folgende Zeilen als Beispiel:
Position = Range("Eintrag!F1")
pos_monat = Range("Eintrag!E" & Position)
Pos_tag = Range("Eintrag!I1") - 2
u_dauer = Range("Eintrag!K1") - Range("Eintrag!I1")
Position = Range("Eintrag!C1")
pos_name = Range("Eintrag!B" & Position)
Position = Range("Eintrag!N1")
eintrags_kategorie = Range("Eintrag!M" & Position)

Die in den " angegebenen Zellen enthalten Ziffern bzw. Zellbezeichnungen.

<p align="left"><font size="1" face="Century Gothic"><font color="#000000">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag ein Link entfernt.</font>

Stema
25.09.2001, 08:41
Hallo Mightymagic,

ich weiß nicht, ob Du schon mal in der Hilfe nachgesehen hast. Die Syntax dieses Befehls ist
expression.Range(Cell1)
expression.Range(Cell1, Cell2)
Als expression wird im Allgemeinen ActiveSheet oder Worksheet("Name") oder Worksheet(1) angegeben und sie ist notwendig!
Die Range ist dann ein Objekt, das einen Zellbereich zurückgibt. Hierbei kann es sich auch um eine einzelne Zelle handeln.

In Deinem Fall würde ich folgende Syntax verwenden:
Position = Worksheets("Eintrag").Cells(1, 6)
pos_monat = Worksheets("Eintrag").Cells(Position, 5)

Aber was war eigentlich Deine Frage? :o

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten und die Signatur angepasst...</font>

Mightymagic
25.09.2001, 10:09
Danke STEMAS,

soweit habe ich das verstanden.

Noch etwas: Kann man den Frabwert, den VBA in Excel verwendet irgendwie auslesen?

Mightymagic
25.09.2001, 10:12
Soweit so gut,

doch noch ne Frage. wie kann ich den Farbwert von Zellen auslesen, um den dann in einem VBA Modul zu verwenden???

Stema
25.09.2001, 12:27
Gib mal "ColorIndex" als Suchwort in der Hilfe ein!

Klaus-Dieter
25.09.2001, 15:49
Hallo Mightymagic,

Du kannst die Hintergrundfarbe z.B. so in eine Variable auslesen: Farbe = Selection.Interior.ColorIndex. In der Variablen Farbe findest Du dann die Farbnummer der Hintergrundfarbe. Damit kannst Du dann weiterarbeiten z.B. so:
If Farbe = 15 Then [Deine Anweisung]. Es geht aber auch so:
If Selection.Interior.ColorIndex = 15 Then [Deine Anweisung].

jinx
25.09.2001, 18:01
<font size="2" face="Century Gothic">Moin,

@ Mightymagic:
Typische Frage von mir, nämlich ganz dumm: Warum benennst Du Deine Zellen nicht einfach bzw. warum führst Du die Berechnungen nicht auf einem Blatt durch und kopierst/verschiebst die Ergebnisse hinterher? Es ist unübersehbar - ab und zu hakt´s im Forum - aber etwas Geduld: Ein Beitrag als Antwort reicht doch! Man kann die eigenen Beiträge auch editieren (Blatt und Stift)... Ich habe nichts dagegen, wenn im Verlaufe eines Threads Fragen auftreten, diese dort zu stellen; aber Deine Zusatzfrage gehört doch wohl zu diesem Beitrag (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=55195)...

@ Stema:

Gemäß Deiner Ausführung ist dann diese Anweisung falsch?
For Each i in Range("Tabelle1")
...
Next i

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten und die Signatur angepasst...</font>

Stema
26.09.2001, 08:20
Hallo Jinx,

Du sprichst also von diesem Beitrag: http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=55195

Die Selection liefert als Rückgabewert ein Range-Objekt. Ein Range-Objekt kann nun aber leider kein Range-Objekt zurückgeben.
Somit funktioniert Deine Idee leider nicht.

ABER: folgendes funktioniert. :)


Sub Durchstrich_erkennen()
Dim Zelle As Range, i As Integer
For Each Zelle In Me.UsedRange
If Zelle.Font.Strikethrough = True Then Zelle.Font.Strikethrough = False
i = i + 1
Next
MsgBox i
End Sub
Funktioniert auch mit Worksheets(1).UsedRange
und ActiveSheet.UsedRange

Die For Each-Anweisung funktioniert nur für die Elemente eines Containers, sprich eine Untermenge.
Tipp: Im Locals-Fenster findest Du alle Objekte, die Deinem Code gerade zur Verfügung mit dem aktuellen Wert, wenn Du ihn debuggst. Aber das weisst Du sicher!

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten und die Signatur angepasst...</font>

jinx
26.09.2001, 21:39
<font size="2" face="Century Gothic">Moin, Stema,

Titel dieses Beitrags: Wie interpretiert man den RANGE-Befehl? Antwort ist ja richtig - aber auch vollständig? Der Hinweis auf die OH ist eine legitime Antwort - aber dort wird die Range-Eigenschaft als Application-, Range- und Worksheet-Objekt dargestellt.
Ich bin durchaus in der Lage (siehe Links im Thread), auf einen Beitrag hinzuweisen, wenn ich ihn denn meine. Der Hinweis auf den von Dir genannten Beitrag fehlt...
Aus Deinem Posting:
Als expression wird im Allgemeinen ActiveSheet oder Worksheet("Name") oder Worksheet(1) angegeben und sie ist notwendig! (gekürzt!)
Aus der OH Excel 2000:
In diesem Beispiel wird der Bereich testRange in einer Schleife bearbeitet und die Anzahl der leeren Zellen des Bereiches angezeigt.

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre>numBlanks = 0
<span class="TOKEN">For</span> <span class="TOKEN">Each</span> c <span class="TOKEN">In</span> Range(&quot;testRange&quot;)
<span class="TOKEN">If</span> c.Value = &quot;&quot; <span class="TOKEN">Then</span>
numBlanks = numBlanks + 1
EndIf
<span class="TOKEN">Next</span> c
MsgBox &quot;There are &quot; &amp; numBlanks &amp; &quot; empty cells in this range&quot;</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php) Abschluß von meiner Seite: Ich hätte halt gern den Hinweis gesehen, dass es den Range-Befehl nicht gibt...

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag der Code für dieses Forum und die Signatur angepasst.<font>