Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Alternative zu Select Befehlen

Forumthread: Alternative zu Select Befehlen

Alternative zu Select Befehlen
17.10.2017 10:29:23
FelixZ
Hallo alle zusammen,
ich suche eine Alternative zu diesem Makro, welche ohne meine Select Verweise auskommt, da das Bildschirmflackern sehr nervig ist. Bei meinem Versuch mit With habe ich das Einfügen der Werte nicht mehr hinbekommen.
Hier mal die aktuelle funktionierende Version mit den Select Befehlen.
Vielen Dank schon mal für Eure Hilfe.
Sub Update_Project_1()
Set Wb = ThisWorkbook
Set WsQuelle = Wb.Worksheets("DP_Sources")
Set WsZiel = Wb.Worksheets("DataPool")
Set wAct = ActiveWorkbook
Set wProject = wAct.Sheets(2)
Application.ScreenUpdating = False
If WsQuelle.Range("D2").Value  "" Then
If WsQuelle.Range("F2").Value = "-" Or WsQuelle.Range("F2").Value = "" Then
WsQuelle.Range("D2").Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
Sheets(2).Range("B5").Copy
WsQuelle.Range("A2").PasteSpecial xlValues
Sheets(2).Range("B3").Copy
WsQuelle.Range("B2").PasteSpecial xlValues
WsQuelle.Range("C2").Value = Mid(Sheets(2).Range("A18").Value, 13, 3)
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
End If
WsQuelle.Range("F2") = Date
For i = 2000 To 2 Step -1
If WsQuelle.Cells(2, 1).Value = WsZiel.Cells(i, 1).Value Then
WsZiel.Cells(i, 1).EntireRow.Delete
End If
Next i
WsQuelle.Range("D2").Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
Sheets("Import for GPS").Range("A5:S150").Copy
leereZeile = WsZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
WsZiel.Cells(leereZeile, 1).PasteSpecial xlValues
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
Sheets("Report_HC-Chart").Select
Cells(1, 3).Select
End If
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alternative zu Select Befehlen
17.10.2017 10:47:09
Daniel
Hi
sorry, aber ich kann in dem code jetzt kein Überflüssiges Select finden.
am einfachsten vermeidest du das Bildschirmflackern, wenn du am Anfang ein Blatt selektierst, welches nicht beteiligt ist.
was sicherlich nervig ist, ist das Löschen der Zeilen, weil du hier jede Zeile einzeln löschst.
For i = 2000 To 2 Step -1
If WsQuelle.Cells(2, 1).Value = WsZiel.Cells(i, 1).Value Then
WsZiel.Cells(i, 1).EntireRow.Delete
End If
Next i
mit folgendem Code kannst du alle Zellen auf einmal löschen (wenn in Spalte A keine Formeln stehen)
With WsZiel.Columns(1)
.Replace WsQuelle.Cells(2, 1).Value, true, xlwhole
if Worksheetfunction.CountIf(.Cells, true) > 0 then
.SpecialCells(xlcelltypeconstants, 4).EntireRow.Delete
end if
end with
Gruß Daniel
Anzeige
AW: Alternative zu Select Befehlen
17.10.2017 11:02:19
FelixZ
Hallo Daniel,
danke für deine Antwort!
In dieser Spalte, welche ich abprüfe, stehen Projektnummern.
Die Schleife soll prüfen ob es zu der jeweiligen Projektnummer schon Einträge gibt und wenn ja die ganze Zeile löschen, weil sonst im nächsten Schritt des Makros das Projekt nochmal mit anderen/neuen Werten hinzugefügt würde.
Anzeige
AW: Alternative zu Select Befehlen
17.10.2017 11:36:39
mmat
Hallo,
bei mir flackerts auch :-).
ich dem mir, das liegt daran, dass du die Quelldateien via Hyperlink öffnest.
Versuch mal
 Workbooks.Open WsQuelle.Range("D2").Hyperlinks(1).Address

AW: Alternative zu Select Befehlen
17.10.2017 11:43:23
FelixZ
Hi,
ich habs ausprobiert, leider öffnet das Marko aber das Workbook nicht. Läuft einfach so durch.
Anzeige
AW: Alternative zu Select Befehlen
17.10.2017 16:28:38
mmat
Bei mir nicht reproduzierbar. Es sollte zumindest eine Fehlermeldung kommen.
Was steht denn bei dir in so einem Hyperlink drin ?
;
Anzeige
Anzeige

Infobox / Tutorial

Alternativen zu Select-Befehlen in Excel VBA


Schritt-für-Schritt-Anleitung

Um Bildschirmflackern in Deinem Excel-VBA-Makro zu vermeiden und die Verwendung von Select-Befehlen zu reduzieren, kannst Du folgende Schritte befolgen:

  1. Makro öffnen: Öffne den VBA-Editor (Alt + F11) und suche nach Deinem Makro.
  2. Select-Befehle identifizieren: Durchsuche Deinen Code nach Select- und Activate-Befehlen.
  3. Mit With-Anweisungen arbeiten: Ersetze Select-Befehle durch With-Blöcke. Zum Beispiel:
    With WsZiel
       .Cells(leereZeile, 1).PasteSpecial xlValues
    End With
  4. ScreenUpdating deaktivieren: Setze Application.ScreenUpdating = False am Anfang Deines Makros und wieder auf True am Ende.
  5. Testen: Führe das Makro aus und prüfe, ob das Flackern reduziert wurde.

Häufige Fehler und Lösungen

  • Fehler: Bildschirmflackern bleibt
    Lösung: Stelle sicher, dass Du alle Select-Befehle entfernt hast und ScreenUpdating korrekt gesetzt ist.

  • Fehler: Workbook öffnet nicht
    Lösung: Wenn Dein Makro nicht das Workbook öffnet, überprüfe den Hyperlink. Verwende:

    Workbooks.Open WsQuelle.Range("D2").Hyperlinks(1).Address
  • Fehler: Zeilen werden nicht gelöscht
    Lösung: Verwende die Replace-Methode, um mehrere Zeilen auf einmal zu löschen, wie in Daniels Beispiel gezeigt.


Alternative Methoden

Wenn Du nach einer Excel-Makro-Alternative suchst, die ohne Select-Befehle auskommt, probiere folgende Ansätze:

  • Array-Techniken: Lade Daten in Arrays und bearbeite sie dort, bevor Du sie zurück ins Arbeitsblatt schreibst. Das reduziert die Interaktion mit dem Arbeitsblatt und erhöht die Geschwindigkeit.
  • Formeln statt Makros: Überlege, ob Du bestimmte Aufgaben mit Excel-Formeln lösen kannst, anstatt VBA zu verwenden.

Praktische Beispiele

Hier sind einige Beispiele, um Select-Befehle zu vermeiden:

Beispiel 1: Zeilen löschen ohne Select

With WsZiel.Columns(1)
    .Replace WsQuelle.Cells(2, 1).Value, True, xlWhole
    If WorksheetFunction.CountIf(.Cells, True) > 0 Then
        .SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
    End If
End With

Beispiel 2: Werte kopieren ohne Select

WsZiel.Cells(leereZeile, 1).Value = WsQuelle.Range("A2").Value

Tipps für Profis

  • Verwende Option Explicit: Dies zwingt Dich, alle Variablen zu deklarieren. So vermeidest Du Fehler und hast eine bessere Übersicht.
  • Nutze Error Handling: Füge Fehlerbehandlungsroutinen ein, um Probleme bei der Ausführung Deines Makros zu identifizieren und zu lösen.

FAQ: Häufige Fragen

1. Warum sollte ich Select-Befehle vermeiden?
Select-Befehle können das Makro langsamer machen und zu Bildschirmflackern führen. Stattdessen solltest Du direkte Referenzen verwenden.

2. Gibt es eine gute Excel-VBA-Alternative, um Daten zu bearbeiten?
Ja, Du kannst Arrays oder Excel-Formeln verwenden, um Daten effizienter zu bearbeiten, ohne auf VBA zurückzugreifen.

3. Was kann ich tun, wenn mein Makro nicht wie gewünscht funktioniert?
Überprüfe Deinen Code auf Fehler, nutze Debugging-Tools im VBA-Editor und stelle sicher, dass alle Abhängigkeiten (z.B. Hyperlinks) korrekt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige