Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
928to932
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
928to932
928to932
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ohne Select

ohne Select
24.11.2007 11:48:00
Larissa

Hallo,
ich suche für 2 Makros eine Lösung ohne Select, damit ich nicht das Tabellenblatt öffnen muss.
Wie könnte das funktionieren:
1.)
Sheets("Rechnungsbuch").Visible = xlSheetVisible
'neue Rechnungsnummer zuordnen
Sheets("Rechnungsbuch").Select
Range("A60000").End(xlUp).Offset(0, 0).Select
Value = Selection + 1
Sheets("Rechnung").Select
Range("I21") = Value
Sheets("Rechnungsbuch").Visible = xlSheetUnVisible
2.)
Sheets("Artikel").Visible = xlSheetVisible
Sheets("Artikel").Select
Selection.Range("A2", Cells(Rows.Count, 1).End(xlUp).Offset(0, 7)). _
Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range( _
"A2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal
Sheets("Artikel").Visible = xlSheetUnVisible
Wäre toll, wenn es auch ohne Select geht.
Lieben Gruß,
Larissa

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ohne Select
24.11.2007 12:07:46
mumpel
Hallo!
Du musst das Blatt nicht einblenden. Das sollte auch so funktionieren.
Ungetestet:

Sub PlusEins()
With Sheets("Rechnungsbuch").
Range("A60000").End(xlUp).Offset(0, 0).Value = .Range("A60000").End(xlUp).Offset(0, 0).Value +  _
1
End With
End Sub



Sub Sortieren()
Sheets("Artikel").Range("A2", Cells(Rows.Count, 1).End(xlUp).Offset(0, 7)). _
Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range( _
"A2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal
End Sub


Gruß, Rene

Anzeige
AW: ohne Select
24.11.2007 12:21:00
Larissa
Danke Rene,
wann muss mann "With Sheets(..." nehmen und wann genügt es, dass Sheet vor die Range zu setzen?
Ich werde sie gleich noch testen und Rückmeldung geben.
Lieben Gruß,
Larissa

AW: ohne Select
24.11.2007 12:41:26
mumpel
With benutzt man, damit man nicht in jeder Zeile den Sheetnamen mit angeben muss. With ist natürlich nicht pflicht, macht den Code aber übersichtlicher.
Beispiel mit With

Sub test()
With Sheets("Tabelle1")
.Unprotect "Passwort" 'Blattschutz aufheben
.Range("a1").value= "1"
.Protect "Passwort 'Blattschutz setzen
End With
End Sub


Beispiel ohne With


Sub test()
Sheets(Tabelle1").Unprotect "Passwort" 'Blattschutz aufheben
Sheets(Tabelle1").Value = "1"
Sheets(Tabelle1").Protect "Passwort"
End Sub


Beide Beispiele machen aber das selbe.

Anzeige
Nachtrag
24.11.2007 12:44:00
mumpel
Muss natürlich so sein

Sub test()
Sheets("Tabelle1").Unprotect "Passwort" 'Blattschutz aufheben
Sheets("Tabelle1").Range("a1").Value = "1"
Sheets("Tabelle1").Protect "Passwort"
End Sub


Sortiercode funzt noch nicht
24.11.2007 12:55:00
Larissa
Achso, das leuchtet mir ein. Vielen Dank für die kleine Nachhilfe.
Leider funktioniert der Sortiercode irgendwie nicht. Es kommt ein "Anwednungs oder objektdefinierter Fehler".
Wenn ich With... nehme, kommt zwar keine Fehlermeldung, sortiert aber auch nicht. Komisch.
Gruß,
Larissa

AW: Sortiercode funzt noch nicht
24.11.2007 13:39:00
Daniel
Hi
wenn du dich auf diesen Sortiercode beziehst,

Sheets("Artikel").Range("A2", Cells(Rows.Count, 1).End(xlUp).Offset(0, 7)). _
Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range( _
"A2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal

,
dann muss erfolgendermassen korrigiert werden, damit er richtig sortiert:


Sheets("Artikel").Range(Sheets("Artikel").range("A2"), Sheets("Artikel").Cells(Rows.Count, 1).End(xlUp).Offset(0, 7)).Sort Key1:=Sheets("Artikel").Range("C2"), Order1:=xlAscending, Key2:=Sheets("Artikel").Range("A2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase :=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal,    DataOption2:=xlSortNormal


Merke:
bezieht sich ein Zellbezug (RANGE oder CELLS) nicht auf das Default-Sheet (im allgemeinen Modul das gerade Aktve Sheet, im Modul eines Sheets eben dieses Sheet, muss die Sheetbezeichnung immer vorangestellt werden.
Das wird gerade bei den Konstrukten RANGE(CELLS, CELLs) , RANGE().SORT Key1:=CELLs(), RANGE().FIND(What:=CELLs()) gerne immer wieder vergessen, die Sheetbezeichnung wird NICHT von der Funktion auf ihre Parameter übertragen sondern muss immer wieder neu angegeben werden:
Sheet().Range(sheets().cells(), Sheets().cells())
Gruß, Daniel
das ist übrigens auch einer der Gründe , warum ich mittlerweile anstelle obigen Austdruck folgendes Konstrukt verwende:
Sheet().Cells().Resize()

Anzeige
AW: ohne Select
24.11.2007 12:07:00
Jan3
Hi,
Beschreibe mal Dein Problem etwas näher!
Was willst Du mit dem ersten und zweiten Makro realisieren?
Jan

AW: ohne Select
24.11.2007 13:02:04
Larissa
Hallo Jan,
mit dem ersten weise ich eine neue Rechnungsnummer zu und der zweite sortiert nur.
Das Problem ist, dass ich nicht die Tabellenblätter öffnen möchte und weil ich von Hajo gelernt habe, dass man zu 99,9% auf Select verzichten kann, möchte ich es jetzt auch ohne versuchen.
Lieben Gruß,
Larissa

AW: ohne Select
24.11.2007 13:05:00
mumpel
Beim sortieren muss das blatt (leider) doch aktiv sein. So müsste es funktionieren:

Sub t()
Application.ScreenUpdating = False
With Sheets("Tabelle1")
.Visible = True
.Select
.Range("A2", Cells(Rows.Count, 1).End(xlUp).Offset(0, 7)). _
Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range( _
"A2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal
.Visible = False
End With
Application.ScreenUpdating = True
End Sub


Anzeige
@Mumpel
24.11.2007 13:19:00
Josef
Hallo Mumpel (lustiger Name)
das Blatt muss nicht aktiv und auch nicht sichtbar sein, wenn du den With-Rahmen richtig einsetzt.
Sub t()

With Sheets("Tabelle1")
    .Range("A2", Cells(Rows.Count, 1).End(xlUp).Offset(0, 7)).Sort _
        Key1:=.Range("C2"), _
        Order1:=xlAscending, _
        Key2:=.Range("A2"), _
        Order2:=xlAscending, _
        Header:=xlGuess, _
        OrderCustom:=1, _
        MatchCase:=False, _
        Orientation:=xlTopToBottom
End With

End Sub

Gruß Sepp

Anzeige
Punkt vor Cell.. fehlt noch!
24.11.2007 13:20:00
Josef
Sub t()

With Sheets("Tabelle1")
    .Range("A2", .Cells(Rows.Count, 1).End(xlUp).Offset(0, 7)).Sort _
        Key1:=.Range("C2"), _
        Order1:=xlAscending, _
        Key2:=.Range("A2"), _
        Order2:=xlAscending, _
        Header:=xlGuess, _
        OrderCustom:=1, _
        MatchCase:=False, _
        Orientation:=xlTopToBottom
End With

End Sub

Gruß Sepp

Anzeige
AW: Punkt vor Cell.. fehlt noch!
24.11.2007 15:06:10
Larissa
Hallo,
vielen Dank für die vielen Kommentare. Ich musste leider etwas erledigen und konnte mich noch nicht dazu melden. Also der letzte Code von Sepp funktioniert super bei mir.
Danke für die Mühe.
Gruß,
Larissa

AW: @Mumpel
24.11.2007 13:29:00
mumpel
Hallo Sepp!
Funktioniert bei mir trotzdem nicht.
Den Spitznamen habe ich von meiner Tante (die Schwester von meinem Vater), weil ich früher gerne "gemumpelt" (= gegessen) habe.
Gruß, Rene

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige