Excel "Fehler 13" Typen Unverträglich bei Kopieren/Einsetzen?

2 Antworten

Auf dem ersten Blick fallen mir zwei Sachen auf:

  1. Es gibt nirgendwo ein "Paste"
  2. Im Errorhandler setzt du das ScreenUpdating auf False. Das ist unlogisch, weil du es schon am Anfang der Sub auf False setzt. Im Handler müsstest du es auf True setzen.

Nein das meine ich mit Paste nicht. Wenn ich im der Tabelle Ursprung die Spalte A mit kopieren/ersetzen (Copy/Paste) ersetze bekomme ich den Fehlercode 13. Ändere ich aber die Werte in der Spalte A von Hand (Beispiel aus Zahl 2349324 mach ich 341234) dann funktioniert weiterhin alles.

0
@cwendel

Außer dass es sich um einen Datentypkonvertierungsfehler im Zuge des Kopierprozess handeln könnte, fällt mir nichts weiteres dazu ein.

Formatier Quell- und Zielzelle gleich.


Dein Code ist mühsam mit bloßem Auge zu debuggen und "Fehler 13" ist nicht sehr aussagekräftig. 

Kommt der Fehler überhaupt beim Ablauf des Codes oder beim händischen Copy & Paste? Weil wenn der Fehler beim Copy & Paste kommt, frage ich mich, wozu du den Code postest.

Tritt der Fehler doch beim Ablauf des Codes auf, würde ich schrittweise reindebuggen.


Den von mir aufgedeckten Fehler im Errorhandler solltest du auf jeden Fall korrigieren, denn dieser ändert das Verhalten von Excel auch noch nach dem Ablauf des Makros.

0
@Suboptimierer

Was muß dann raus? Den Code hat mir jemand geschrieben. Leider gibt es den nur nicht mehr :/ :(

Das Script bricht direkt nach der ersten umgewandelten Zeil ab :(

ErrorHandler: With Application .ScreenUpdating = False .DisplayAlerts = False If Err.Number <> 0 Then MsgBox "Fehler " & Err.Number & vbLf & Err.Description End With
0
@cwendel

Da muss nichts raus. Es muss korrigiert werden:

ErrorHandler:
   With Application
      .ScreenUpdating = True
      .DisplayAlerts = True
      If Err.Number <> 0 Then MsgBox "Fehler " & Err.Number & vbLf & Err.Description
   End With
   MsgBox "Fertig!"

0
@cwendel

Bei welchem Befehl bricht es ab. Setze mal einen Haltepunkt und taste dich zur Zeile voran. Schau dir an, welche Tabellen du hast und welche Namen sie tragen und achte darauf, dass du keine Tabellenreferenzen verwendest, wenn die Tabelle gelöscht wurde.

Alle Objekte, mit denen die in einer Codezeile verwendet werden, sollten vorhanden sein.

Beim Löschen von Zellen müssen die Referenzen auf Zellen und der veränderte Count von Bereichen usw. berücksichtigt werden.

0
@Suboptimierer
.Range("$A$1:$B$" & lRowSrc).RemoveDuplicates Columns:=1, Header:=xlYes
Ab hier kommt der Fehler! Den ersten Durchgang durchläuft das Script Richtig und dann bricht es in der dort ab.
0
@cwendel

Folgender Code geht bei mir einwandfrei, auch mehrfach:

Sub x()
 Dim lRowSrc lRowSrc = Cells(Rows.Count, 1).End(xlUp).Row
 Range("$A$1:$B$" & lRowSrc).RemoveDuplicates Columns:=1, Header:=xlYes
End Sub

Befehle wie 

ActiveSheet.Name = NameD
Set wksDst = ActiveSheet

würde ich versuchen zu umgehen. Zumindest zum Testen solltest du gezielter referenzieren:
Set wksDst = Sheets("xyz")
0
@Suboptimierer

Wie soll ich die umgehen ich habe da leider keinen Plan von. VBA habe ich noch nie gekonnt. Das hat wie gesagt man jemand geschrieben den ich leider nicht mehr fragen kann. Kann ich dir die Datei mal schicken das du dir das anschaust???

0
@cwendel

Uff, zu sehr wollte ich mich da eigentlich nicht reinknien.

  • Teile die Funktion in viele kleine Funktionen
  • Beobachte in den Überwachten Ausdrücken die Werte und Referenzen deiner Objekte.
  • Kommentiere für die Problematik unwichtige Teile zunächst aus oder lege eine zweite Funktion an und kopiere da nacheinander Codeabschnitte hinein, bis ein Fehler auftritt.
  • Benutze den Makrorekorder und vergleiche mit dem vorhandenen Code.
0
@Suboptimierer

Ich würde dir das auch bezahlen wenn du willst ich komme dabei echt nicht weiter und habe davon auch keinen Richtigen Plan. Nun sitze ich seid vorgestern schon Stunden dran :( :(

0
@cwendel

Ich bin ja nicht der einzige, der sich gerne hier mit Excel und VBA beschäftigt. Vielleicht findet sich noch jemand.

An Aufträgen bin ich derzeit nicht interessiert.

Was auch anderen helfen könnte wäre eine Beschreibung, was das Programm überhaupt machen soll.

Dafür würde ich die Frage editieren, sodass jeder das sofort mitliest.

0
@Suboptimierer

Wenn ich die Werte in der Tabelle Ursprung ersetze (Copy/Paste) erhalte ich einen "Fehler 13". Kann mir jemand sagen wieso???

In der Tabelle Ursprung gibt es zwei Spalten A und B: In Spalte A stehen Nummern/Buchstaben (Beispiel Spalte A: 2134325, 2134325, 2134325, 13243434, AA12433424,AA12433424,AA12433424,AA12433424,BB234324)  in Spalte dazugehörige Bildurls. In der Spalte A kann dabei auch mehrmals der gleiche Wert stehen.

In die neue Tabelle soll nun in der Spalte A nur noch 1 mal jede Nummer stehen und in den weiteren Spalten die (B,C,D,E,F usw) die dazugehörigen Bild-URLS.

Für Hilfe wäre ich sehr dankbar!

0

wenn der code nur genau das machen soll, was du beschrieben hast, dann ist der viel zu kompliziert. warum überträgst du nicht zeile für zeile auf eine neues worksheet (ev. in einem neuen workbook) und schaust vorher in einer schleife ob der eintrag schon exisitiert und wenn ja, dann füllst du die url in die nächste freie spalte.

und übertragen einfach mit tabelle_neu.cells(row1,col1) = tabelle_alt.cells(row2,col2)

Ich habe da keine groeß Ahnung von. Mir ist das mal so geschrieben worden aber leider kann ich bei ihm nicht nachfragen.

Mehr als ich beschrieben habe will ich nicht. Wie meinst du das mit Tabelle _neu????

0
@cwendel

@maximilianus7 kannst du mir sagen wie du das meinst????

0
@cwendel

wie soll ich dir das erklären, wenn du von VBA keine ahnung hast?

am besten stellst du die frage neu, erkläre genau was du erreichen willst, am besten mit vorher-nachher-beispiel, sagst dass du kein VBA kann und ob vielleicht jemand dir ein makro bastelt.

0

MS Excel,VBA - Wie kann ich eine until Scheilfe mit 2 Bedingungen erstellen?

Hallo,

ich stehe vor dem Problem, das ich eine Schleife in Excel einbinden muss. Wenn ich das richtig verstanden habe ist dies nur mit VBA möglich, leider habe ich keinerlei Kenntnisse in VBA…ich hoffe ihr könnt mir weiterhelfen.

Ich habe die Datei so vereinfacht, dass die Formel so einfach wie möglich bleibt. Folgendes Problem, Ich habe 3 Spalten:

Wenn in Spalte A die Zahl „2“ vorkommt soll eine rote Markierung in Spalte C (in der gleichen Zeile) erfolgen.

Die rote Markierung in Spalte C soll erst dann aufhören wenn in Spalte B die Zahl 2 enthält

….danach soll es wieder von vorne losgehen, die Schleife soll über die ganze Spalte hinweg laufen. Zur Veranschaulichung – so soll das Endergebnis aussehen (sry für die furchbare Formatierung)

0 0

2 0 rot

0 0 rot

0 0 rot

0 0 rot

0 2 rot

0 0

2 0 rot

0 2 rot

0 0

0 0

0 2

0 0

0 2

0 0

0 0

2 0

0 0

0 2 rot

...zur Frage

Makro zum Zusammenfassen von Spalten

Hallo alle zusammen,

ich hab ein kleines Problem mit einem Makro, welches ich mir mit Hilfe diverser Quellen versucht habe auf meinen Fall zusammenzuschustern. Folgendermaßen kann man sich die Grundsituation vorstellen:

Ich habe in den Spalten D Und E ca 70 Zeilen mit Einträgen. Bis auf die Zellen 11 - 14 Ist die Spalte E leer. Also wollte ich ein Makro benutzen, welches die Spalte D wenn D und/oder E leer sind mit E zusammenfasst und sonst nicht.

Das soll dann auch für die Spalten F,G und H,I und immer soweiter klappen. Wer könnte mir Helfen und zeigen wo mein Fehler liegt denn bisher funktioniert das Makro nicht ganz so wie ich mir das vorgestellt habe.


Sub Formatierung()

Dim Zeile As Integer Dim Spalte As Integer

For Spalte = 4 To 256 Step 2
For Zeile = 1 To 100

If ((Not (IsEmpty(Cells(Spalte, Zeile)))) = True And IsEmpty(Cells(Spalte + 1, Zeile)) = True) Then
Range(Cells(Zeile, Spalte), Cells(Zeile, Spalte + 1)).Merge
End If

If IsEmpty(Cells(Spalte, Zeile)) = True And IsEmpty(Cells(Spalte + 1, Zeile)) = True Then
Range(Cells(Zeile, Spalte), Cells(Zeile, Spalte + 1)).Merge
End If

Next Zeile

Next Spalte

End Sub


So sieht das bisher aus. Für jede Hilfe vorab schonmal besten Dank

...zur Frage

For Steuervariabel wird bereits verwendet! was bedeutet das?

Hallo nochmals,

ich habe mit hilfe con einigen "gutefrage.net" usern einen code geschrieben und versuche jzt durch "Copy-Paste" es für jede Zelle anzuwenden.

Beim For-Befehl kommt immer folgende Meldung "For Steuervariabel wird bereits verwendet"

was bedeutet das ? heißt es, das man das "For" nur einmal in einem code gebrauchen kann ? wäre vielleicht ein "GoTo" befehl angebrachter? ( sprich: go to next cell, wenn die bedingung erfüllt ist )

hier ist der code:

sub kopieren( )

Dim Zelle As Range Dim Wert As Variant

Wert = ActiveSheet.Range("J16:j29")

With Sheets("Tabelle2") For Each Zelle In .Range("F6:G6")

If ((Range("J16").EntireRow.Hidden = True)

Or (Range("J16").EntireColumn.Hidden = True))

Or (Range("J16").Font.Strikethrough = True) Then

Zelle.Value = ActiveSheet.Range("J17")

Else

Zelle.Value = ActiveSheet.Range("J16")

With Sheets("tabelle2")

For Each Zelle In .Range("H6:I6")

If ((Range("J17").EntireRow.Hidden = True)

Or (Range("J17").EntireColumn.Hidden = True))

Or (Range("J17").Font.Strikethrough = True) Then

Zelle.Value = ActiveSheet.Range("J18")

Else

Zelle.Value = ActiveSheet.Range("J17")

End If End With End If Next Zelle End With End Sub

Danke schonmal für eure Tatkräftigen Hilfen :)))

Gruß Newb

...zur Frage

Exif-Daten durch Excel(VBA)?

Hallo, ich habe eine Datenbank mit Fotos in Excel erstellt. Jetzt möchte ich aber, dass das Datum das Datum der Aufnahme ist, also das Datum, das in den Exif-Daten der Bilder angegeben ist. Ich habe die Funktion .DateTimeOriginal gefunden, aber habe gelesen, dass diese Funktion nicht in VBA arbeitet, da sie aus einer anderen Sprache, VB .NET, ist und in Visual Basic Express angewendet werden kann. Gibt es andere Möglichkeiten die Exif-Daten rauszuleiten durch VBA ?

...zur Frage

VBA Makro Excel Letzte beschriebene Zeile vor Leerzeile, weitere Leerzeile einfügen

Guten Tag,

ich suche einen Code für ein Makro,dass in Spalte B unter der letzten beschriebenen Zelle vor einer leeren Zelle (also nicht am kompletten Ende des Sheets) eine Leerzeile einfügt. Habe schon etliche codes ausprobiert, zb

Sub letzte_Zeile()

'letzte benutzte Zelle in Spalte 2 finden DIM Ende As Long With ActiveSheet

Ende = .Cells(Rows.Count, 2).End(xlUp).Row End With

End Sub

Dieser sollte mir eig die letzte beschriebene Anzeigen,es funktioniert aber Garnichts.

Freue mich über Vorschläge. Viele Grüße

...zur Frage

Zellen mit gleichem Inhalt pro Spalte automatisch verbinden ?

Hallo Community, möchte gerne alle Zellen gleichen Inhalts pro Spalte automatisch verbinden lassen (Inhalte müssen, wie bei Excel üblich nur einmal erhalten bleiben). Später soll also der Konfernzname, das Datum und der Ort nur noch einmal pro Konferenz auftauchen. Die Teilnehmer und ihre Beiträge könnte man dann zwar auch noch verbinden, aber hier müssten natürlich die ganzen Zellinhalte erhalten bleiben (was Excel üblicherweise nicht macht). Ist wahrscheinlich nur mit VBA möglich oder? Danke im Vorraus

Bild siehe Anhang

...zur Frage

Was möchtest Du wissen?