Clever-Excel-Forum

Normale Version: Alle Zellen abwählen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
hi,

Zellen anwählen geht so:

Range("A1").Select

Aber wie wähle ich alle Zellen ab?

Julia :)
Moin,
das geht nicht.
mindestens eine Zelle muss im Blatt aktiviert sein.
Naja, nach Ausführung von Code kommt es ja vor, dass gar keine Zelle angewählt ist. Führe z.B. mal den Code "Sub Erstellen()" in der #AVKK aus - danach ist keine Zelle mehr angewählt:

Einzeln:
[attachment=10527]
[attachment=10528]
Zusammen:
[attachment=10529]
Ja, da kann durchaus der Eindruck entstehen, dass keine Zelle aktiviert ist.

Aber führe einmal den Code schrittweise (F8) aus, dann ist (bei mir) am Ende durchaus eine Zelle auch selektiert.

Und hänge einmal diesen Code an deinen an und führe ihn im Anschluss an den Durchlauf des ersten aus:

Code:
Sub GalileoGalilei_Kopernikus()   'Und sie bewegt sich doch :-)
   Sheets("Tabelle1").Activate
   MsgBox ActiveCell.Address(0, 0)
   MsgBox Selection.Address(0, 0)
'   ActiveCell.Select
End Sub

Übrigens: Prima, dass du die *.xlsx plus *.bas "geliefert" hast, das ermöglicht auch jenen Helfern, die aus berechtigter Vorsicht keine VBA-Files öffnen, die Dateien zu öffnen und auch solche Phänomene bestaunen zu können.  Blush
dankeschön Günther,

ich führe den Code per F8 einzeln aus. Sobald ich in Zelie: "Application.DisplayAlerts = False" stehe (gelb markiert) ist keine Zelle mehr in der #AVKK angewählt. Stattdessen in MappeN, welche ja(ansonsten unbemerkt) temporär angelegt wird. Am Ende ist nur noch die #AVKK geöffnet. Und A1 angewählt. Es ist dann die einzige Datei die geföffnet ist. Ich führe den Code noch einmal aus per F8. Und wieder wird A1 angewählt.

Führe ich den Code aber per Play-Knopf aus, und nich mit F8, dann ist jedes 2. Mal keine Zelle angewählt! Warum?

(31.03.2017, 18:17)GMG-CC schrieb: [ -> ]Aber führe einmal den Code schrittweise (F8) aus, dann ist (bei mir) am Ende durchaus eine Zelle auch selektiert.
Die Regel ist jedoch, dass der Code ja automatisch ausgeführt wird & dann wird keine Zelle ausgewählt.

Wenn ich deinen Kopernikus-Code danach ausführe, zeigt er mir zunächst per MsgBox A1 an, obwohl die Zelle nicht sichtbar ausgewählt ist. Und oben links steht, dass Kontrollkästchen 1 ausgewählt ist. Wenn ich die Cursortasten bewege, verschiebt sich auch Kontrollkästchen 1 & ich lande nicht etwa in Zelle B1 oder A2.
Dann gibt es eine Fehlermeldung: "Laufzeitfehler 438. Objekt unterstüzt diese Eigenschaft oder Methode nicht." Dabei wird die Codeile: "MsgBox Selection.Address(0, 0)" gelb markiert.

Das passiert beim Durchlauf, wenn vorher A1 markiert war. Weil danach ja keine Zelle mehr sichtbar markiert ist(es ist ja Kontrollkästchen 1 markiert). Obwohl er ja am Ende auch die Sub Zellanwahl auswählt worin steht:

Code:
Range("A1").Select
End Sub
Und auch in der Erstellen-Sub selbst steht ja am Ende
Code:
Range("A1").Select
Doch das hilft nichts. Ich kann das auch 2x hintereinander schreiben oder die Zellauswahl-Sub 2x callen. Nützt alles nichts. Ich muß erst manuell auf Play drücken, bei der Zellauswahl-Sub. Dann wird A1 angewählt.

Wie kann ich das also nun einstellen, dass er immer A1 anwählt?
Julia,
mir ging es in erster Linie darum, dass in Excel immer 1 Zelle aktiv ist. 
Versuche einmal, Cells(1,1).Select zu verwenden; nicht getestet, sollte aber funktionieren (habe derzeit keine Zeit dafür).
ja danke. Es ist ja keine Zelle aktiv, sondern eine Checkbox. Kklappt leider auch nicht. Folgendes ebenfalls nicht:


Code:
SUB Zellanwahl()
Workbooks("#AVKK_2.xlsm").Activate
Worksheets("Tabelle1").Select
Range("A1").Select
Range("B1").Select
Range("A1").Select
Cells(1,1).Select
Application.Goto Range("Tabelle1!A1")
Worksheets("Tabelle1").Range("A1").Select
Range(Worksheets("Tabelle1").Range("A1").Select
Sheets("Tabelle2").Select
End Sub
Er bleibt stehts auf Tabelle1 stehen & hat keine Zelle angewählt. Obwohl der Code ja auf "Sheets("Tabelle2").Select" endet. Auch wenn die dese Zeile entferne, wird nicht A1 auf Tabelle1 angewählt. Es spielt auch keine Rolle ob ich die Zellanwahl-Sub per CAll aus der Erstellen-Sub aufrufe, oder den Code direkt ans Ende der Erstellen-Sub schreibe.
Hi,

na dann sind wir mal wieder beim Nix-verstehen!

Mit select wird eine Zelle ausgewählt, erkenntlich am Rand um diese Zelle. Und Dein Code macht genau das, was Du ihm sagst (abgesehen von dem dicken Syntaxfehler mit Range(...!

Laß mal diesen Code laufen:


Code:
Sub test()
Worksheets("Tabelle1").Select
Range("A1").Select
Debug.Print Now + 10 ^ -5
Application.Wait (Now + 10 ^ -5)
Range("B1").Select
Application.Wait (Now + 10 ^ -5)
Range("A1").Select
Application.Wait (Now + 10 ^ -5)
Cells(1, 1).Activate
Application.Wait (Now + 10 ^ -5)
Application.Goto Range("Tabelle1!A2")
Application.Wait (Now + 10 ^ -5)
Worksheets("Tabelle1").Range("C10").Activate
Application.Wait (Now + 10 ^ -4)
Worksheets("Tabelle1").Range("A1").Select
Application.Wait (Now + 10 ^ -5)
Sheets("Tabelle2").Select
End Sub
 Und jetzt beobachte mal, was passiert!
Danke Dir Edgar.  Ohja, die eine Codezeile mit dem Syntaxfehler hatte sich noch eingeschlichen - funktioniert so nicht.

Dein Code rufe ich per Call am Ende der Erstellen-Sub auf. Das Ergebnis ist das gleiche, als wenn ich sie nicht aufrufen würde:

Variante A: Es ist keine Zelle angewählt bevor ich Erstellen-Sub ausführe.
Dann ist am Ende in Tabelle1 angewählt(wobei Tabelle2 angewählt ist). Wenn ich die Zeile "Sheets("Tabelle2").Select" ´rauslösche, dan nist A1 in Tabelle1 ebenso angewählt und auch Tabelle1 angewählt.
(während der Laufzeit werden unterschiedliche Zellen in Tabelle1 angewählt)

Variante B: Es ist eine Zelle angewählt in Tabelle1 bevor ich Erstellen-Sub ausführe.
Dann ist am Ende in Tabelle1 keine Zelle angewählt(wobei Tabelle2 angewählt ist). Wenn ich die Zeile "Sheets("Tabelle2").Select" ´rauslösche, dann kein Feld in Tabelle1 angewählt. Tabelle1 ist angewählt.
(während der Laufzeit wird A1 angewählt durch test-sub 2. Zeile(egal welche Zelle zuvor augewählt war) & am Ende ist keine Zelle mehr ausgewählt.
Ich habe ein "Application.Wait Now + TimeSerial(0, 0, 2)" als 3. Zeile testweise in test-sub eingebaut, so kann ich sehen, dass A1 wegen "Range("A1").Select" angewählt wird. Danach wird aber nicht mehr B1 oder andere Felder angewählt. Und wie gesagt, am Ende ist gar kein Feld mehr angewählt. Auch wenn ich alles aus test-sub nach "Range("A1").Select" herausnehme. Wenn ich auch noch das "Worksheets("Tabelle1").Select" herausnehme aus der test-sub, dann wird A1 überhaupt nicht angewählt - also auch nicht während der Laurzeit.

Code:
Sub Erstellen()
    Dim varSheets As Variant
    Dim Dateiname As String
    varSheets = Array("Tabelle1", "Tabelle2")
    Dateiname = Worksheets("Tabelle1").Range("B50").text
    ThisWorkbook.Sheets(varSheets).Copy
    Application.DisplayAlerts = False
        With ActiveWorkbook
        .SaveAs Filename:=ThisWorkbook.Path & "\" & Dateiname, _
                FileFormat:=xlOpenXMLWorkbookMacroEnabled
        .Close
        End With
    Application.DisplayAlerts = True
Call test
End Sub
Code:
Sub test()
Worksheets("Tabelle1").Select
Range("A1").Select
'Application.Wait Now + TimeSerial(0, 0, 2) ::zum Test mal temporär eingebaut
Debug.Print Now + 10 ^ -5
Application.Wait (Now + 10 ^ -5)
Range("B1").Select
Application.Wait (Now + 10 ^ -5)
Range("A1").Select
Application.Wait (Now + 10 ^ -5)
Cells(1, 1).Activate
Application.Wait (Now + 10 ^ -5)
Application.Goto Range("Tabelle1!A2")
Application.Wait (Now + 10 ^ -5)
Worksheets("Tabelle1").Range("C10").Activate
Application.Wait (Now + 10 ^ -4)
Worksheets("Tabelle1").Range("A1").Select
Application.Wait (Now + 10 ^ -5)
'Sheets("Tabelle2").Select ::zum Test, wegen schnellerer Anwahl von Tabelle1 mal temporär ausgebaut
End Sub
Hi,

Zitat:Es ist keine Zelle angewählt bevor ich Erstellen-Sub ausführe
Das gibt es nicht, es ist immer eine Zelle angewählt, egal was Du machst! Sobald Du eine Datei öffnest ist 1Zelle angewählt, in der Regel A1 des aktiven Tabellenblatts. Daran wirst Du auch nichts ändern!!!!!!
Seiten: 1 2