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

Wie selektieren umgehen?

Wie selektieren umgehen?
07.01.2006 15:38:23
Peter
Hallo
Mit nachfolgendem Code hole ich einige Werte aus der vorigen Tabelle meines Workbooks. Da ich nicht weiss, wieviele es jeweils sind (Anzahl Zeilen wechselt), habe ich eine Schlaufe eingebaut.
Nun habe ich schon einige Male gelesen, dass das Arbeiten mit selektieren und aktivieren nicht "modern" ist.
Es ist mir aber nicht klar, wie ich beispielsweise diesen Code umschreiben müsste, damit ich selection nicht mehr brauche.
Die VBA-Basics bei www.herber.de habe ich durchgesehen, konnte meine Lösung davon jedoch nicht ableiten (vielleicht habe ich am falschen Ort geschaut).
Kann mir jemand am konkreten Beispiel aufzeigen, wie man's anstellt, damit selection nicht mehr gebraucht wird?
Danke, Peter

Sub aVBA_SumIf()
Dim aBook As String
Dim aSheet As String
Dim vsheet As String
Dim x As Variant
Dim zNr As Long
ThisWorkbook.Activate
aBook = ActiveWorkbook.Name
aSheet = ActiveSheet.Name
vsheet = Worksheets(ActiveSheet.Index - 1).Name
Debug.Print vsheet
Application.Goto reference:=Range("d5")
zNr = ActiveCell.Row
Do While ActiveCell.Offset(0, -2) <> ""
Debug.Print zNr
x = Application.WorksheetFunction.SumIf(Workbooks(aBook).Sheets(vsheet).Range("B:B"), ActiveSheet.Range("B" & zNr), Workbooks(aBook).Sheets(vsheet).Range("C:C"))
ActiveCell = x
ActiveCell.Offset(1, 0).Select
zNr = zNr + 1
Loop
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie selektieren umgehen?
07.01.2006 16:36:50
Beverly
Hi Peter,
ich finde, dein Code ist schon Ok so. Du verwendest doch nur 1 Mal ThisWorkbook.Activate. Wenn davon gesprochen wird, .Activate und .Select nicht zu verwenden, dann sind die Codes gemeint, die so aussehen wie die mit dem Makrorecorder aufgezeichneten. Da ist ja fast in jeder Zeile einer dieser Befehle drin. Und das ist ja nun wirklich nicht notwendig.
Bis später,
Karin
AW: Wie selektieren umgehen?
07.01.2006 16:40:17
Peter
Hallo Karin
Danke für die ermutigende Rückmeldung
Peter
Wirklich ?
07.01.2006 16:54:03
Peter
Servus,
Teste die Loop Schleife mal mit 10.000 Einträgen, wenn du dann standhaft auf den Bildschirm schauen kannst, ohne das dir von dem geflimmere schlecht wird, herzlichen Glückwunsch.
Man könnte das ganze schon etwas schneller und einfacher schreiben, wenn man wüßte worum es überhaupt geht.
MfG Peter
Anzeige
AW: Wie selektieren umgehen?
07.01.2006 16:52:52
et999
Hi,
ich versuch mal 'nen Schnellschuß. Probier mal ob's klappt:
Statt:
ActiveCell = x
ActiveCell.Offset(1, 0).Select
zNr = zNr + 1
schreib:
Cells(zNr,4).Value = x
zNr = zNr + 1
Viel Glück
Uwe
(:o)
AW: Wie selektieren umgehen?
07.01.2006 16:53:47
Josef
Hallo Peter!
Schau mal!
Option Explicit

Sub aVBA_SumIf()
Dim eBook As Workbook 'Deklaration nicht als String sondern als Objekt!
Dim aSheet As Worksheet, vSheet As Worksheet
Dim zNr As Long


Set eBook = ThisWorkbook 'Statt "ThisWorkbook.Activate, ..., direkt referenzieren!
Set aSheet = eBook.ActiveSheet
If aSheet.Index = 1 Then Exit Sub
Set vSheet = eBook.Sheets(aSheet.Index - 1)

Debug.Print vSheet.Name

With aSheet
  zNr = 5 'Statt Range("D5").Activate, zNr = Activecell.Row!
  Do While .Cells(zNr, 4).Offset(0, -2) <> ""
    .Cells(zNr, 4) = Application.SumIf(vSheet.Range("B:B"), .Range("B" & zNr), vSheet.Range("C:C"))
    zNr = zNr + 1
  Loop
End With

End Sub



'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Wie selektieren umgehen?
07.01.2006 16:58:33
Peter
Hallo Sepp
Werde mir dies mal zu Gemüte führen.
Herzlichen Dank!
Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige