Anzeige
Archiv - Navigation
616to620
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
616to620
616to620
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA - Immer wieder zu A1

VBA - Immer wieder zu A1
30.05.2005 12:12:56
Chris
Hallo.
Ich hab folgendes Problem. Ich hab das schon mal gelöst, finde aber die entsprechende Excel-Datei nicht mehr.
Ich möchte, dass wenn ich die Tabelle aufmache, die Markierung auf A1 ist, und wenn man ein anderes Feld als A1 anklickt, die Markierung sofort wieder (mit und ohne MsgBox-meldung) auf A1 "zurückhüpft".
Ich fand das damals in so ner Officevorlage (ich glaub von Office2000 oder so), die ich aber nicht mehr hab.
Pls help.
Gruß, Chris

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Immer wieder zu A1
30.05.2005 12:16:24
Sylvio
Einfach diesen code in Arbeitsmappe einfügen

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Cells(1, 1).Activate
End Sub

Gruß Syl
AW: VBA - Immer wieder zu A1
30.05.2005 12:31:26
Chris
Sehr gut, danke! Ich habs in nur eine Tabelle eingefügt (die 2te).
Geht das auch, dass wenn ich zB in Tabelle1 das feld F3 (kann auch ein anderes sein) drücke, das es den gleichen effekt gibt, Excel aber bei klick auf das feld nicht in der Selben Tabelle zum feld A1 geht, sondern zu Tabelle2 wechselt und dort das Feld A1 markiert? (So ne Art link - oder geht das auch mittels Formel? Lieber wärs mir aber mit VBA)
Gruß Chris
Anzeige
AW: VBA - Immer wieder zu A1
30.05.2005 12:44:33
Galenzo
Syntax:
Sheet.Range.Activate
Beispiele:
Sheets("Tabelle1").Range("A1").Activate
Sheets(1).Range("A1").Activate
Sheets("Tabelle1").[A1].Activate
Sheets(1).[a1].Activate
Sheets("Tabelle1").Cells(1,1).Activate
.....
Nun kannst due es auf deine erfordernisse anpassen
AW: VBA - Immer wieder zu A1
30.05.2005 13:03:23
Chris
Aha, danke.. und wo liegt der unterschied zwischen Cells(1,1), Range(A1) und [A1]?
Wenn keine Antort mehr: Danke an alle!
Gruß Chris
P.S.: Ich frag deshalb, da ich voll der Visual-Basic-Noob bin.
AW: VBA - Immer wieder zu A1
30.05.2005 13:10:36
Chris
Hab das mit Sheets Rang usw. ausprobiert (alle 4) und ich bekomm nur das zurück:
Laufzeitfehler '1004':
Die Activate-Methode des Range-Objekts konnte nicht ausgeführt werden.
Falls meine erklärung Falsch verstanden wurde, nochmal kanz knapp:
Ich - klick auf feld XY (zB A1) in Tabelle1 - schwupps - auf einmal ist Tabelle2 zu sehen und feld A1 ist dort markiert!
Hoffe mir kann wer helfen, danke
Gruß Chris
Anzeige
AW: VBA - Immer wieder zu A1
30.05.2005 13:26:21
Galenzo
Range("A1") und Cell(1,1) beziehen sich beide auf die Zelle A1.
Cells(x,y) ist insofern variablen, als du hier Spalten- und Zeilen-Nr. der Zelle angeben kannst - gut vor allem in solchen Fällen, wo die Zeilen-/Spaltennummer das ergebnis einer Berechnung ist.
[A1] ist nur 'ne Kurzform und (fast) das gleiche wie Range("a1"). Das mal so am Rande.
Den o.g. Fehler bekommst du, weil du eine Zelle auf einem Blatt anwählen willst, welches noch sozusagen "hinter dem gerande aktiven Blatt liegt". Daher mußt du dieses Blatt zuerst in den "Vordergrund bringen". So:
Sheets("Tabelle3").Activate
Sheets("Tabelle3").Range("A1").Activate
Oder besser formuliert so:
With Sheets("Tabelle3")
.Activate
.Range("A1").Activate
End With
Viel Erfolg!
Anzeige
AW: VBA - Immer wieder zu A1
30.05.2005 13:37:54
Chris
Aha. Das versteh ich mittlerweile, aber wo muss ich denn das eintragen? bzw was muss ich da auswählen (ich klicke doppelt auf Tabelle1 wähle statt (Allgemein) Worksheet aus und was statt (Deklarationen)? Oder muss ich das als Modul speichern. wenn ja, wie mach ich es, dass das Makro zu laufen beginnt (also Tabelle2 in den vrodergrund bringt) wenn ich eine bestimmte zelle auswähle (mit der maus und nem linken klick)?
Das wechseln zu ner anderen Tabelle geht ja, was ich will ist:
Ich markiere in der Tabelle1 zB das Feld K9 (simpler Klick auf das Feld K9). Gleich darauf wechselt Excel sofort zur Tabelle2 (von mir aus markiert es auch noch das Feld A1).
Wie bringe ich das hin? Es ist zwar schön, dass ihr versucht, mir so Codebrocken hinzuschmeissen, das hilft mir aber nicht! Ich weiß nämlich nicht, wo ich das reinzuschreiben habe! Wie gesagt Ich kann (fast) Null VBA.
Gruß Chris
Anzeige
AW: VBA - Immer wieder zu A1
30.05.2005 17:21:56
Michael
Hallo Chris,
nur die Nerven behalten.
Du suchst Dir das Objekt Worksheet im Klappmenü (wie Du schon beschrieben hast) und
wählst im rechten Klappmenü das Ereignis SelectionChange.
Jetzt erscheinen die Zeilen:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub

im Texteditor.
Dies ist sozusagen der Rahmen für dein Quellcode den Du eingeben willst.
Den Code gibst Du zwischen diese beiden Zeilen ein.
Dieses Ereignis(Makro) wird automatisch ausgeführt wenn in der Tabelle1 eine neue Zelle ausgewählt wird, also bei jedem Wechsel der Zellauswahl.
Deshalb heißt es auch worksheets_selectionchange(), das ist so von Microsoft festgelegt.
Es gibt eine ganze Anzahl von festgelegten Ereignissen für die Tabellen und auch die Arbeitsmappe die man für die Makros benutzt.
Für Deine Aufgabe benötigst Du folgenden Code

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'macht die Tabelle2 zur aktiven Tabelle
Sheets(2).Activate
'wählt die Zelle A1 der Tabelle2
Sheets(2).Cells(1, 1).Select
End Sub

als Anmerkung die Cells-Schreibweise bedeutet Cells(zeile,spalte)
also ist Cells(1,1) = A1, cells(2,1)=A2 usw.
Eignet sich sehr gut zum programmieren von Schleifen
Gruss
Michael
Anzeige
AW: VBA - Immer wieder zu A1
30.05.2005 13:19:35
Sylvio
Kleiner Auszug aus der Hilfe zu Range und Cell
Range-Eigenschaft
Verwenden Sie Range(Arg), wobei arg den Bereich benennt, um ein Range-Objekt zurückzugeben, das eine einzelne Zelle oder einen Zellbereich darstellt. Im folgenden Beispiel wird der Wert der Zelle A1 in Zelle A5 übertragen.
Worksheets("Sheet1").Range("A5").Value = _
Worksheets("Sheet1").Range("A1").Value

Im folgenden Beispiel wird der Bereich "A1:H8" mit Zufallszahlen aufgefüllt, indem für jede Zelle des Bereichs die Formel festgelegt wird. Bei Verwendung ohne Objektkennzeichner (das Objekt links vom Punkt) gibt die Range-Eigenschaft einen Bereich im aktiven Blatt zurück. Ist das aktive Blatt kein Arbeitsblatt, schlägt die Methode fehl. Aktivieren Sie mithilfe der Activate-Methode ein Arbeitsblatt, bevor Sie die Range-Eigenschaft ohne expliziten Objektkennzeichner einsetzen.
Worksheets("Sheet1").Activate
Range("A1:H8").Formula = "=Rand()" 'Range is on the active sheet

Im folgenden Beispiel wird der Inhalt des Bereichs mit dem Namen "Kriterien" gelöscht.
Worksheets(1).Range("Criteria").ClearContents

Wenn Sie als Bereichsadresse ein Textargument einsetzen, müssen Sie die Adresse im A1-Bezugssystem angeben (die Z1S1-Schreibweise kann nicht verwendet werden).
"Cells-Eigenschaft
Verwenden Sie Cells(Reihe, Spalte), wobei Reihe der Zeilenindex und Spalte der Spaltenindex ist, um eine einzelne Zelle zurückzugeben. Im folgenden Beispiel wird der Wert von Zelle A1 auf 24 gesetzt.
Worksheets(1).Cells(1, 1).Value = 24

Im folgenden Beispiel wird die Formel von Zelle A2 festgelegt.
ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"

Sie könnten zwar die Visual Basic-Zeichenfolgenfunktionen verwenden, um die A1-Bezugsart zu ändern, es ist jedoch erheblich einfacher (und wesentlich besserer Programmierstil), die Schreibweise Cells(1, 1) zu verwenden.
Verwenden Sie Ausdruck.Cells(Reihe, Spalte) , wobei Ausdruck für einen Ausdruck steht, der ein Range-Objekt zurückgibt, und Reihe und Spalte relativ zur linken oberen Ecke des Bereichs angegeben werden, um einen Teilbereich zurückzugeben. Im folgenden Beispiel wird die Formel von Zelle C5 festgelegt.
Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"

"Range" und "Cells"
Verwenden Sie Range(Zelle1, Zelle2), wobei Zelle1 und Zelle2 Range-Objekte sind, die die Anfangs- und Endzellen festlegen, um ein Range-Objekt zurückzugeben. Im folgenden Beispiel wird die Linienart des Rahmens um die Zellen "A1:J10" festgelegt.
With Worksheets(1)
.Range(.Cells(1, 1), _
.Cells(10, 10)).Borders.LineStyle = xlThick
End With

Beachten Sie den Punkt vor jedem Aufruf der Cells-Eigenschaft. Der Punkt bewirkt, dass das Ergebnis der vorhergehenden With-Anweisung auf die Cells-Eigenschaft angewendet wird - in diesem Fall wird dadurch ausgedrückt, dass sich die Zellen im ersten Arbeitsblatt befinden (ohne den Punkt würde die Cells-Eigenschaft Zellen im aktiven Blatt zurückgeben).
MFG Syl
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige