Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1172to1176
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
Inhaltsverzeichnis

Korrekte (oder inteligente) Syntax mit "with"

Korrekte (oder inteligente) Syntax mit "with"
Peter
Guten Tag
Mit nachfolgendem Code hole ich Daten in die Tabelle "Buchungstage", sortiere diese und eliminiere die Duplikate.
In der jetzigen Form funktioniert es. Allerdings wollte ich mit "with sheets("Buchungstage") arbeiten, damit der Code etwas strukturierter ist, was mir leider nicht gelang.
Im Weiteren gehe ich davon aus, dass die Tabelle aktiv sein muss. Ist dies nicht der Fall, bleibt der Code bei
With Sheets("Buchungstage").Range(Cells(Z1, 1), Cells(Z2, 1))
hängen.
Kann mir jemand dazu eine Hilfestellung geben?
Danke, Peter
Sub Doppelte_Loeschen()
Dim Z1 As Long, Z2 As Long, SP As Long, c As Range, Ende As Long, lngSpa As Long, Bereich As  _
Range
'----Inhalt der Tabelle löschen und Daten zur Bearbeitung hineinkopieren
Sheets("Buchungstage").Cells.ClearContents
With Range("xBuchdat")
'Werte in Tabelle "Buchungstage"kopieren ab Zelle A2
.Copy Destination:=Sheets("Buchungstage").Range("A2")
End With
'------Position der hineinkopierten Daten bestimmen
Z1 = 2    '1. Zeile mit Daten
SP = 1    'Spalte
Z2 = Sheets("Buchungstage").Cells(65536, 1).End(xlUp).Row      'Letzte Zeile
'--- Hilfsspalten einfügen und Original-Reihenfolge sichern
Sheets("Buchungstage").Range("A:B").Insert
With Sheets("Buchungstage").Range(Cells(Z1, 1), Cells(Z2, 1))
.FormulaR1C1 = "=Row()"
.Formula = .Value
End With
'--- Doppelte kenzeichnen und loeschen
On Error Resume Next
With Sheets("Buchungstage").Range(Cells(Z1, 2), Cells(Z2, 2))
.EntireRow.Sort Key1:=Cells(Z1, SP + 2), Order1:=xlAscending, Header:=xlNo
.FormulaR1C1 = "=IF(RC[" & SP & "]=R[-1]C[" & SP & "],TRUE,RC[-1])"       'bei dieser  _
Formel fliegen alle Null Werte raus
''.FormulaR1C1 = "=IF(EXACT(RC[" & SP & "],R[-1]C[" & SP & "]),TRUE,RC[-1])"  'bei  _
dieser Formel bleibt ein Null-Wert, sofern vorhanden
.Formula = .Value
'     .EntireRow.Sort Key1:=Cells(Z1, 2), Order1:=xlAscending, Header:=xlNo
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
End With
On Error GoTo 0
'--- Aufräumen
Sheets("Buchungstage").Range("A:B").Delete
Ende = Sheets("Buchungstage").Cells(65536, 1).End(xlUp).Row      'Letzte Zeile
'-----Range des verbleibenden Datenbereichs benennen
Set Bereich = Worksheets("Buchungstage").Range("A" & Z1, "A" & Ende)
ActiveWorkbook.Names.Add _
Name:="datExtrakt", _
RefersTo:=Bereich, Visible:=True
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
set statt with
17.08.2010 16:03:39
EvilRik
Hallo Peter,
arbeite doch mit set statt with.

dim wksBT
set wksBT=thisworkbook.worksheets("Buchungstage")

Dann markierst du alles und ersetzt "sheets("Buchungstage")" durch "wksBT".
Henrik
vor Cells auch wksBT.Cells setzen ! owT
17.08.2010 16:05:45
EvilRik
auf den Punkt gebracht
17.08.2010 16:10:21
Rudi
Hallo,
es kommt auf die Punkte . an.
Sub Doppelte_Loeschen()
Dim Z1 As Long, Z2 As Long, SP As Long, c As Range, Ende As Long, lngSpa As Long, Bereich As  _
_
Range
'----Inhalt der Tabelle löschen und Daten zur Bearbeitung hineinkopieren
With Sheets("Buchungstage")
.Cells.ClearContents
With .Range("xBuchdat")
'Werte in Tabelle "Buchungstage"kopieren ab Zelle A2
.Copy Destination:=.Range("A2")
End With
'------Position der hineinkopierten Daten bestimmen
Z1 = 2    '1. Zeile mit Daten
SP = 1    'Spalte
Z2 = .Cells(65536, 1).End(xlUp).Row      'Letzte Zeile
'--- Hilfsspalten einfügen und Original-Reihenfolge sichern
.Range("A:B").Insert
With .Range(.Cells(Z1, 1), .Cells(Z2, 1))
.FormulaR1C1 = "=Row()"
.Formula = .Value
End With
'--- Doppelte kenzeichnen und loeschen
On Error Resume Next
With .Range(.Cells(Z1, 2), .Cells(Z2, 2))
.EntireRow.Sort Key1:=.Cells(Z1, SP + 2), Order1:=xlAscending, Header:=xlNo
.FormulaR1C1 = "=IF(RC[" & SP & "]=R[-1]C[" & SP & "],TRUE,RC[-1])"       'bei dieser _
Formel fliegen alle Null Werte raus
''.FormulaR1C1 = "=IF(EXACT(RC[" & SP & "],R[-1]C[" & SP & "]),TRUE,RC[-1])"  'bei _
dieser Formel bleibt ein Null-Wert, sofern vorhanden
.Value = .Value
'     .EntireRow.Sort Key1:=Cells(Z1, 2), Order1:=xlAscending, Header:=xlNo
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
End With
On Error GoTo 0
'--- Aufräumen
.Range("A:B").Delete
Ende = .Cells(65536, 1).End(xlUp).Row      'Letzte Zeile
'-----Range des verbleibenden Datenbereichs benennen
Set Bereich = .Range("A" & Z1, "A" & Ende)
ActiveWorkbook.Names.Add _
Name:="datExtrakt", _
RefersTo:=Bereich, Visible:=True
End With
End Sub

Teste mal
Das Sheet muss nicht aktiv sein.
Gruß
Rudi
Anzeige
AW: auf den Punkt gebracht
17.08.2010 16:33:47
Gerd
Hallo Rudi,
der Range("xBuchdat") muss aus einem anderen Blatt gezogen werden, sonst macht das wenig Sinn.
With Sheets("Buchungstage")
.Cells.ClearContents
With .Range("xBuchdat")
'Werte in Tabelle "Buchungstage"kopieren ab Zelle A2
.Copy Destination:=.Range("A2")
End With
Vielleicht kommt noch eine Info, aus welchem Blatt?
Gruß Gerd
dann lassen wir den einen . eben weg...
17.08.2010 16:41:53
Rudi
Hallo,
.. und wir somit vom aktiven Sheet kopiert. Oder genau referenzieren.
.....
With Sheets("Buchungstage")
.Cells.ClearContents
Sheets("Quelle").Range("xBuchdat").Copy Destination:=.Range("A2")
....

Gruß
Rudi
Anzeige
AW: dann lassen wir den einen . eben weg...
17.08.2010 17:12:32
Peter
Hallo Rudi
Das hat auf Anhieb funktioniert, nach dem ich die kleine Anpassung zum Range "xBuchdat" gemacht habe. Vielen Dank*
Dazu habe ich zwei Anschlussfragen:
Diese Codezeile habe ich nur ganz kurz gehalten mit With Range("xBuchdat"), da es sich um einen globen Namen handelt. Gibt es Gründe, trotzdem Sheets("Journal-zum-bearbeiten") vornean zu stellen?
Ich habe festgestellt, dass der Code selbst dann funktioniert, wenn die Tabelle ausgeblendet ist. Das hat mich erstaunt. Wo sind denn die Grenzen bei der Bearbeitung von ausgeblendeten Tabellen?
Gruss, Peter
AW: dann lassen wir den einen . eben weg...
18.08.2010 12:47:42
Rudi
Hallo,
a) Für die Übersicht.
b) Du kannst es nicht aktivieren oder drucken und nichts darauf selectieren. Sonst fällt mir gerade nichts ein.
Gruß
Rudi
Anzeige
AW: dann lassen wir den einen . eben weg...
18.08.2010 14:06:44
Peter
Hallo Rudi
Vielen Dank.
Gruss, Peter

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige