Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1388to1392
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

Excel 2003 macht auf 2010 probleme

Excel 2003 macht auf 2010 probleme
08.11.2014 16:13:36
Jorgi
Hallo,
ich hatte schon mal einen Beitrag:
mein erster Code "freielagerplätze2 " wandelt Lagerplätze in der Tabelle1 von der Tabelle3 um.
z.B.
Tabelle1
1-69-69-69
1-69-69-70
Tabelle 3 sagt
SpalteA.........SpalteB
1-69-69.........1-70-70
Dann macht der Code eine umwandlung
Sub freieLagerplätze2()
Dim lngZeile As Long
Dim lngLetzte As Long
lngZeile = 1
With Worksheets("Tabelle1")
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows. _
Count)
With .Range(.Cells(1, 1), .Cells(lngLetzte, 1))
Do
.Replace What:=Worksheets("Tabelle3").Cells(lngZeile, 1).Value, _
Replacement:=Worksheets("Tabelle3").Cells(lngZeile, 2).Value, LookAt:=xlPart _
, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
lngZeile = lngZeile + 1
Loop While Worksheets("Tabelle3").Cells(lngZeile, 1)  ""
End With
End With
End Sub
Ergebnis
1-70-70-69
1-70-70-70
2.
mein zweiter Code löscht Lagerplätze die in Tabelle1 von Tabelle2 drin sind.
Sub löschenvonTabelle()
With Sheets("Tabelle1")
With .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Offset(, 1)
.FormulaR1C1 = "=if( isnumber(match(RC[-1],'Tabelle2'!C1,0)),#n/a,0)"
On Error Resume Next
.SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete
.Clear
End With
End With
End Sub
z.B
Tabelle1
1-69-40-99
1-99-99-99
1-99-99-20
Tabelle2
1-99-99-99
Ergebnis:
1-69-40-99
1-99-99-20
Bei Excel 2003 hatte ich nie Probleme. Durch Excel 2010 reagiert der Code nicht. Wenn ich ein neues Arbeitsblatt nehme und teste den Code mit händische zahlen , dann geht es ohne Probleme. Aber die liste kommt vorher über ein Programm ->( Wird dann auf "txt" gespeichert) . Irgendwie eine versteckte Formation ?
Hoffe mir kann jemand helfen?
Hab schon Text in Splalten probiert
Spalten Formation usw.
Besten Dank
Jorgi

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel 2003 macht auf 2010 probleme
08.11.2014 16:48:59
fcs
Hallo Jorgi,
das Problem ist, dass in Tabelle3 in Zeile 2 und 3 keine Daten stehen. Dadurch wird die Do-Loop-Schleife, die wiederholt wird solange in Spalte A die Zellen nicht leer sind, schon in Zeile 2 abgegrochen.
Mit nachfolgenden Ergänzungen/Anpassungen sollte es wieder funktionieren.
Gruß
Franz
Sub freieLagerplätze2()
Dim lngZeile As Long
Dim lngLetzte As Long, lngLetzte3 As Long
lngZeile = 1
With Worksheets("Tabelle3")
lngLetzte3 = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, _
.Rows.Count)
End With
With Worksheets("Tabelle1")
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, _
.Rows.Count)
With .Range(.Cells(1, 1), .Cells(lngLetzte, 1))
Do
If Worksheets("Tabelle3").Cells(lngZeile, 1).Value  "" Then
.Replace What:=Worksheets("Tabelle3").Cells(lngZeile, 1).Value, _
Replacement:=Worksheets("Tabelle3").Cells(lngZeile, 2).Value, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End If
lngZeile = lngZeile + 1
Loop While lngLetzte3 >= lngZeile
End With
End With
End Sub

Anzeige
AW: Excel 2003 macht auf 2010 probleme
10.11.2014 06:35:57
Jorgi
Hallo Franz,
Der code funktioniert super. Danke dir.
Der zweite code macht probleme.
Der soll alle Daten in tabelle1 SpalteA löschen die sich in Tabelle2 Spalte A befunden
Die Zeilen in der Tabelle 1 sollen komplett gelöscht werden und die Zeilen nachrutschen
Hättest du eine idee?
Besten Dank
LG jorgi

AW: Excel 2003 macht auf 2010 probleme
10.11.2014 07:58:25
fcs
Hallo Jorgi,
das Problem ist, dass die Daten Spalte A der beiden Tabellen nie identisch sind.
In allen Zeilen inTabelle 2 stehen hinter den sichtbaren Zeichen noch Leerzeichen. Deshalb funktioniert die VERGLEICH-Funktion nicht und das Ergebnis in Tabelle1 ist in Spalte B in allen Zeilen = 0.
Du musst in Tabelle2 in Spalte A alle Leerzeichen durch einen Leerstring ersetzen, dann sollte es funktionieren.
Gruß
Franz

Anzeige
AW: Excel 2003 macht auf 2010 probleme
10.11.2014 09:30:22
Jorgi
Hallo franz ,
Danke, kann man den Code so anpassen, das er nur Spalte A in der Tabelle2 vergleicht, egal was dahinter steht.
In 2003 hatte ich diesen code:
Der löscht alle Zeilen in der Tabelle1 raus wenn in der Spalte A das gleiche drin steht wie in der Tabelle2 Spalte A
Sub freieLagerplätze3()
    Dim loLetzte1 As Long
    Dim loLetzte2 As Long
    Dim i As Long, j As Long
    Dim raA As Range
    Dim wksA As Worksheet
    Dim wksB As Worksheet
    Set wksA = Sheets("Tabelle1") ' Tabellennamen anpassen; Tabelle in der gelöscht wird
    Set wksB = Sheets("Tabelle2") ' Tabellennamen anpassen; Tabelle in der die Werte in Spalte  _
A gelistet sind
    With wksB
        loLetzte2 = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, . _
Rows.Count)
    End With
    With wksA
        loLetzte1 = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, . _
Rows.Count)
        For i = 2 To loLetzte1
            For j = 2 To loLetzte2
                If .Cells(i, 1) = wksB.Cells(j, 1) Then
                    If raA Is Nothing Then
                        Set raA = Rows(i)
                    Else
                        Set raA = Union(raA, Rows(i))
                    End If
                End If
            Next j
        Next i
    End With
    If Not raA Is Nothing Then
        raA.Delete
        Set raA = Nothing
    End If
End Sub

Warum der nicht mehr geht, das weiss ich leider nicht. Vielleicht kannst du mir helfen
LG Jürgen

Anzeige
AW: Excel 2003 macht auf 2010 probleme
10.11.2014 10:42:52
fcs
Hallo Jürgen,
deine Makros funktionieren nicht, weil in Tabelle1 am Ende der Werte keine Leerzeichen stehen und in Tabelle2 stehen am Ende der Werte immer Leerzeichen - warum auch immer?
Du musst also irgendwie dafür sorgen, dass in Tabelle2 in Spalte A die Leerzeichen am Ende der Werte verschwinden, wenn du mit der Formel arbeiten willst, um doppelte zu löschen
Dein altes Makro könnte evtl. funktionieren mit folgenden Anpassungen in der inneren For-Next-Schleife:
            For j = 2 To loLetzte2
If Trim(.Cells(i, 1)) = Trim(wksB.Cells(j, 1)) Then
If raA Is Nothing Then
Set raA = Rows(i)
Else
Set raA = Union(raA, Rows(i))
End If
Exit For
End If
Next j

Alerdings geht die Laufzeit des Makros hoch, wenn zu sehr viele Zeilen in den Tabellenblättern hast.
Gruß
Franz

Anzeige
AW: Excel 2003 macht auf 2010 probleme
10.11.2014 11:41:18
Jorgi
Hallo franz,
Dein code geht und es stürzt nicht ab.
Ich könnte dich jetzt nur noch knuddeln:-)
Danke danke für deine hilfe
LG Jürgen

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige