Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
596to600
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
596to600
596to600
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

einer spalte einen Namen geben und prüfen

einer spalte einen Namen geben und prüfen
13.04.2005 14:56:00
chris
Hallo Exceller,
habe eine frage, und zwar ist es möglich das ich einer Spalte einen Namen gebe z.b
der ganzen Spalte "E" den Namen - "Titel"
Und dann wenn ich ein Makro starte das mir dann das Makro prüft ob eine zelle
aktiv ist die in der Spalte steht die den namen "Titel" hat ?
So ist es bisher:
If ActiveCell.Column = 5 Then ' 5 weil Spalte E die 5 Spalte ist
...
..
.
jetzt das Probelm wenn ich eine Spalte einfüge oder entferne kann es sein das die 5 nicht mehr stimmt also der spalte mit den "Titeln" nicht mehr in Spalte E steht. Deshalb möchte ich wenn es möglich ist einer Spalte einen Namen geben und daduch immer zu wissen ob sich die aktive Zelle in diese Spalte befindet.
Vielen Dank beste grüße Christian

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: einer spalte einen Namen geben und prüfen
13.04.2005 15:05:03
Florian
Hi,
versuchs mal mit Intersect.
mfg Florian
nicht ganz
13.04.2005 15:20:51
chris
Hallo und danke für den Tipp,
aber wie bekomme ich da statt "Columns(2)) " es so hin das dort steht "Artikel" also das nicht spalte2 immer fest ist Weil die Spalte mit den Artikel kann auch evtl. in Spalte 5 sein usw..?
So habe ich es jetzt:

Sub test()
If Not Intersect(ActiveCell, Columns(2)) Is Nothing Then
MsgBox ("OK")
Else
MsgBox ("nix")
End If
End Sub

und so sollte es sein wenn irgendwie möglich

Sub test()
If Not Intersect(ActiveCell, Spaltenname)Is Nothing Then
MsgBox ("OK")
Else
MsgBox ("nix")
End If
End Sub

Anzeige
AW: nicht ganz
13.04.2005 15:24:40
Florian
If Not Intersect(ActiveCell, [derName]) Is Nothing Then
mfg Florian
@Florian: Dürfte kaum Problem treffen! owT
13.04.2005 15:23:02
Luc
Warum? oT
13.04.2005 18:53:08
Boris
AW: Warum? oT
13.04.2005 19:25:41
Florian
Hi,
ich denke, er hat die Frage nicht gelesen. Er antwortet öfter mal etwas eigenartig.
mfg Florian
Weil das nicht das Problem zu sein scheint, ...
13.04.2005 20:10:28
Luc
...meine Herren.
Nicht nur, wenn die aktive Zelle die Spalte mit Bezeichnung "Titel" trifft, ist interessant, sondern zu berücksichtigen ist auch, dass das nicht immer die gleiche Spalte sein muss. Also muss doch zuerst ermittelt wdn, wo sich "Titel" befindet. Hat der Frager, ChrisB, doch klar zum Ausdruck gebracht!
Deshalb... Grüß dich Chris,
ich schlage eine Ereignisprozedur vor. Wenn das auf die Dauer nervt, dann das Ganze in eine normale Prozedur umsetzen, die per Button bedient wird. In diesem Fall muss die erste Prozedur in die zweite integriert wdn. In der zweiten ersetzt du dann natürlich den Dummy MsgBox durch das, was du da wirklich machen willst.

Rem in das Klassenmodul der Tabelle eintragen:
Option Explicit
Dim TitelSpalte As Integer
Private Sub Worksheet_Activate()
Dim x As Range
For Each x In Range("1:1")
If x.Formula = "Titel" Then
TitelSpalte = x.Column
Exit For
End If
Next x
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox IIf(Target.Column = TitelSpalte, "OK", "nix"), vbOKOnly + vbExclamation, "Titeltreffer"
End Sub 

Habe das getestet und siehe, es fkt bei jedem Markierungswechsel. Wenn das bei Berechnungen nicht fkt, weil die Markierung nicht wechselt bzw die berechnete Zelle nicht als aktive Zelle im engeren Sinne von xl angesehen wird, musst du statt des selectionChange- mal das change-Ereignis (Event) ausprobieren.
Wenn du zwischendurch deine Tabelle so veränderst, das "Titel" in einer anderen Spalte zu stehen kommt, muss die Tabelle neu aktiviert (also 1x raus und wieder rein) wdn, damit die Spaltennr neu ermittelt wird.
Hoffe, Antwort in deinem Sinn
Gruß Luc :-?
Anzeige
Unterschied "Name" und "Spaltenüberschrift
13.04.2005 20:21:18
Boris
Hi Luc,
aus der Frage ging für mich eindeutig hervor, dass die Spalte benannt und nicht bloß mit einer Überschrift versehen wurde:
...ist es möglich das ich einer Spalte einen Namen gebe z.b
der ganzen Spalte "E" den Namen - "Titel"...

Da ist die Nomenklatur für mich eindeutig.
Und demzufolge lässt sich eine Überschneidung sehr gut mit der Intersect-Methode feststellen:
If Not Intersect(ActiveCell, Range("Titel")) Is Nothing Then
'Mach irgendwas...
End If

Grüße Boris
AW: Unterschied "Name" und "Spaltenüberschrift
13.04.2005 20:28:07
chris
Boris vielen Dank !!!!!!!!!!
genau das suchte ich.Das ist genau das oder wie ich es auch suchte. Weil die spalte den namen "titel" hat.
Vielen Dank !!!!!!!
Und vielen Dank auch Luc !!!!!!!
p.s eins verstehe ich nur nicht boris.
If Not Intersect(ActiveCell, Range("Titel")) Is Nothing Then
warum das richtig anspringt bei Range("Titel") undglaublich also heißt dann wenn ich der ganzen spalte den Namen "Titel" gebe jeder Zelle auch so?
Naja fast egal ;) Funktioniert ! Dankeee
Anzeige
Schau dir die Range-Eigenschaft in der Hilfe...
13.04.2005 20:38:17
Boris
Hi Chris,
...mal genauer an.
Wenn du der gesamten Spalte E den Namen "Titel" gibst, dann passiert bei folgenden Anweisungen exakt das Selbe:
Range("E:E").Select
Range("Titel").Select
Die Namensvergabe hat aber den von Dir gewünschten Vorteil, dass sich der Bereich nicht statisch auf Spalte E konzentriert, sondern immer auf den Bereich mit dem Namen "Titel", der sich aufgrund von Spalteneinfügungen/-löschungen ja verschiebt.
Grüße Boris
war der Meinung, meint eher "Bezeichnung" - owT
13.04.2005 20:56:01
Luc
Ist mir schon klar...
13.04.2005 21:02:02
Boris
Hi Luc,
...nur dann würd ich mich mit Antwort-Tadelungen dieser Art doch etwas zurückhalten, denn unterschiedliche Interpretationen wird es immer wieder geben.
Grüße Boris
Anzeige
Danke übrigens...
13.04.2005 21:11:27
Boris
Hi Chris,
denn dank dieses Threads hab auch ich mir die Range-Eigenschaft mal etwas genauer in der Hilfe angesehen.
Was glaubst du, welche Zelle bei folgender Anweisung selektiert wird?

Sub test()
Range("C3").Range("B2").Select
End Sub

Erst antworten - dann ausprobieren! ;-)
Ich wusste es zumindest nicht...
Grüße Boris
AW: Danke übrigens...
13.04.2005 21:22:44
chris
Also ich wusste es auch nicht.
Verstehe auch nicht warum es bei mir die zelle D4 selectiert,
aber das ist mir auch egal :))) Könnt jetzt sagen dummes Excel wird aber sicher seinen Grund haben *g*
Also danke noch mal allen bis zum nächsten mal Chris
Anzeige
Die Erklärung ist doch recht einfach...
13.04.2005 21:28:55
Boris
Hi Chris,
...aus der Hilfe:
Anmerkungen
Wenn diese Eigenschaft mit einem Objektkennzeichner verwendet wird, so ist sie ein Shortcut für ActiveSheet.Range (sie gibt einen Bereich aus dem aktiven Blatt zurück; handelt es sich dabei nicht um ein Tabellenblatt, führt die Eigenschaft zu einem Fehler).
Bei Anwendung auf ein Range-Objekt verhält sich die Eigenschaft relativ zu dem Range-Objekt. Besteht die Auswahl beispielsweise aus der Zelle C3, so gibt Selection.Range("B1") Zelle D3 zurück, da sie sich relativ zu dem Range-Objekt verhält, das von der Selection-Eigenschaft zurückgegeben wird. Dagegen gibt der Code ActiveSheet.Range("B1") immer die Zelle B1 zurück.

Also mit einfach Worten: Range verhält sich immer relativ zum angegebenen Objekt - und ist das Objekt nicht angegeben, dann bezieht es sich immer auf das ActiveSheet - und da ist B2 halt das bekannte B2 ;-)
Wird aber vorher ein Objekt vorgegeben - wie z.B. bei

Sub test()
Range("E1:Z100").Range("A5").Select
End Sub

gibt´s dann E5 - denn der Ausgangspunkt ist E1.
Grüße Boris
Anzeige
AW: Die Erklärung ist doch recht einfach...
13.04.2005 21:50:02
K.Rola
Hi Boris,
was wird hier selektiert?

Sub relativ_oder()
ActiveCell.Offset(2, 1).Range("A1:D1").Select
End Sub

Gruß K.Rola
Ungetestet...
13.04.2005 21:54:54
Boris
Hi K.Rola,
...am Beispiel E15:
F17:I17
Grüße Boris
brilliant :^) oT
13.04.2005 22:05:58
K.Rola
ot
Gegenfrage:
13.04.2005 22:08:02
Boris
Hi Liebste,
was ergibt - in A1 eingetragen - =INDIREKT("Z(-1)S(-1)";0) ?
;-)
Grüße Boris
AW: Gegenfrage:
13.04.2005 22:16:16
K.Rola
Hi Charmantie,
kommt darauf an, was in IV65536 steht.
Gruß K.Rola
PompösGrandiösElefantös! :-p
13.04.2005 22:21:11
Boris
Hi Schatz,
muss aber zugeben, dass mir das bis vor Kurzem noch gar nicht bewusst war - bin nur durch Zufall drauf gestoßen. Geht ja auch mit der direkten Z1S1-Adressierung - nur nutze ich die in Excel eher selten bis gar nicht.
So - bin jetzt erstmal was essen - der Spanier soll mir noch ein schönes Steak zaubern!
Grüße Boris
Anzeige
HÄ ?
13.04.2005 21:33:03
ransi
hallo
Habe mal ein wenig weiter damit experimentiert und kein system erkannt wenn ich das spielchen noch mit 2 oder 3 zusätzlichen ranges ergänzt habe.
Das schmeisst ja alles über den haufen was ich über excel und range() zu wissen glaubte!!
Und das finde ich NICHT in Ordnung.
ransi
Es ist wirklich simpel...
13.04.2005 21:46:04
Boris
Hi Ransi,
es geht halt immer nur um den Ausgangspunkt:

Sub test()
Range("C3").Range("B2").Range("D3").Select
End Sub

Tu einfach so, als sei - der Reihenfolge nach - jeder Range wieder A1. Es geht hier um relative Bezüge:
Also: C3 = A1
Von A1 aus würdest du Dich - um nach B2 zu kommen - eine Zelle nach rechts und eine Zelle nach unten bewegen.
Nur von C3 aus ergibt das dann D4 (1 nach rechts, 1 nach unten).
Jetzt ist D4 wieder A1.
Um von A1 nach D3 zu kommen: 3 Zellen nach rechts und 2 nach unten.
Ausgehend aber von D4 - 3 nach rechts und 2 nach unten = G6.
Ist doch eigentlich ganz logisch.
Grüße Boris
Anzeige
dringende frage noch an evtl. Boris
14.04.2005 13:27:19
chris
Hallo Boris,
habe mal eine frage ich hoffe du kannst mir das sagen weil du ja das ganze mit dem Range Objekt in der diskusion verstanden hast.
Ich führe folgendes aus
ActiveWorkbook.Names.Add Name:="dasdd", RefersToR1C1:="=Tabelle2!C5"
Excel erstellt mir auch einen Namen den ich unter
Einfügen - Namen anschauen kann.
Dort steht dann aber "=Tabelle2!$E:$E"
Warum ?
wie kann ich das schreiben das ich nicht "=Tabelle2!C5" eintragen muss um den namen der Spalte E geben wmöchte ?
Also statt so
ActiveWorkbook.Names.Add Name:="dasdd", RefersToR1C1:="=Tabelle2!C5"
möchte ich das gleiche erreichen
ActiveWorkbook.Names.Add Name:="dasdd", RefersToR1C1:="=Aktivetabelle !5" ' 5 steht für spalte 5
Danke vielmals !!
gruß Chrisian
Anzeige
AW: dringende frage noch an evtl. Boris
14.04.2005 15:24:22
Boris
Hi Chris,

Sub aaa()
ActiveWorkbook.Names.Add Name:="Titel", RefersToR1C1:=ActiveSheet.Columns(5) ' 5 steht für Spalte 5
End Sub

Grüße Boris
AW: dringende frage noch an evtl. Boris
14.04.2005 18:55:36
chris
Danke Boris du bist ein schatz :)
Hat geklappt ! Danke
Is nix anderes als Offset...
13.04.2005 21:51:27
Boris
Hi Ransi,
diese beiden Anweisungen sind absolut identisch:

Sub test()
Range("C3").Range("B2").Range("D3").Select
End Sub


Sub test2()
Range("C3").Offset(1, 1).Offset(2, 3).Select
End Sub

Vielleicht wird´s dadurch klarer...
Grüße Boris

208 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige