Code funktioniert nicht
Betrifft: Code funktioniert nicht
von: Pascal
Geschrieben am: 13.08.2014 09:57:26
Sehr geehrte Damen und Herren
Ich habe eine bitte an euch.
Mein Problem:
Ich möchte Zahlen auslesen und den Auftrag in ein anderen Register auf die entsprechende Zeile einfügen. Dieser Code ist gegangen, obwohl ich nichts verändert habe geht dieser Code nicht mehr. Ich weiss nicht wieso.
Habt ihr vielleicht eine Ahnung?
Was ich bis jetzt ausprobiert habe ohne Erfolg:
- Kompatibilität xls xlsm usw.
- Leerschläge in den Zellen
Details:
Auslesen - AuftrSNrEingelesenMatrix Auftrag zum einfügen = "F2"
Abgleichen mit AuftrSNrEingelesenMatrix - FlasherDaten Spalte C
Einfügen - FlasherDaten Spalte O Doppeltvergabe Spalte P
Wenn ihr noch mehr Infos braucht, bitte unsigniert melden.
Vielen Dank
Liebe Grüsse
Pascal
Code:
Sub Kopieren()
If Range("AuftrSNrEingelesenMatrix!F2") <= 0 Then
Dim strText As String
strText = "angeben!"
MsgBox "Bitte Auftrag " & strText, 16, "Fehler"
With Sheets("AuftrSNrEingelesenMatrix").Select
Range("F2").Select
End With
Else
'Blind an
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
'Variablendeklaration
Dim lSpalte_AA As Long, iÜberschreiben As Boolean, iVerhalten As Long
'Withblock öffnen
With ThisWorkbook.Worksheets("FlasherDaten")
'Schleife starten
For lSpalte_AA = 1 To .UsedRange.SpecialCells(xlCellTypeLastCell).Row
'Git es einen Ausgangswert?
If .Range("AA" & lSpalte_AA).Value <> "" Then
'Ist bereits ein Wert vorhanden?
If .Range("O" & lSpalte_AA).Value <> "" And _
iÜberschreiben = False And _
.Range("O" & lSpalte_AA).Value <> .Range("AA" & lSpalte_AA).Value Then
iVerhalten = MsgBox(.Range("O" & lSpalte_AA).Value & " durch " & .Range("AA" _
_
& lSpalte_AA).Value & " ersetzen?", vbYesNoCancel, "Daten Überschreiben?")
'Überschreiben
If iVerhalten = vbYes Then
iÜberschreiben = True
.Range("O" & lSpalte_AA).Value = .Range("AA" & lSpalte_AA).Value
'Zur betroffenen Zeile gehen
ElseIf iVerhalten = vbNo Then
Dim a5 As String
a5 = MsgBox("In Spalte Doppelvergabe einfügen?.", vbYesNo, "Doppelvergabe?") _
_
If a5 = vbYes Then
Call Kopieren2
GoTo Beenden
ElseIf a5 = vbNo Then
.Range("O" & lSpalte_AA).Select
GoTo Beenden
End If
End If
Else
.Range("O" & lSpalte_AA).Value = .Range("AA" & lSpalte_AA).Value
End If
End If
Next lSpalte_AA
End With
Beenden:
'Blind aus
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End If
End Sub
Sub Kopieren2()
'Blind an
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
'Variablendeklaration
Dim lSpalte_AA As Long, iÜberschreiben As Boolean, iVerhalten As Long
'Withblock öffnen
With ThisWorkbook.Worksheets("FlasherDaten")
'Schleife starten
For lSpalte_AA = 1 To .UsedRange.SpecialCells(xlCellTypeLastCell).Row
'Git es einen Ausgangswert?
If .Range("AA" & lSpalte_AA).Value <> "" Then
'Ist bereits ein Wert vorhanden?
If .Range("P" & lSpalte_AA).Value <> "" And _
iÜberschreiben = False And _
.Range("P" & lSpalte_AA).Value <> .Range("AA" & lSpalte_AA).Value Then
iVerhalten = MsgBox("Doppelvergabe: " & .Range("P" & lSpalte_AA).Value & " _
_
durch " & .Range("AA" & lSpalte_AA).Value & " ersetzen?", vbYesNoCancel, "Daten Überschreiben?") _
'Überschreiben
If iVerhalten = vbYes Then
iÜberschreiben = True
.Range("P" & lSpalte_AA).Value = .Range("AA" & lSpalte_AA).Value
'Zur betroffenen Zeile gehen
ElseIf iVerhalten = vbNo Then
.Range("P" & lSpalte_AA).Select
GoTo Beenden2
End If
Else
.Range("P" & lSpalte_AA).Value = .Range("AA" & lSpalte_AA).Value
End If
End If
Next lSpalte_AA
End With
Beenden2:
'Blind aus
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub
 |
Betrifft: AW: Code funktioniert nicht
von: Rudi Maintaire
Geschrieben am: 13.08.2014 10:10:27
Hallo,
geht dieser Code nicht mehr
immer wieder diese tollen Aussagen.
Was geht nicht mehr?
Sollen wir die Mappe nachbauen?
Lade ein Beispiel hoch.
Gruß
Rudi
P.S.: Variablendeklarationen immer komplett am Anfang des Codes!
 |
Betrifft: AW: Code funktioniert nicht
von: Pascal
Geschrieben am: 13.08.2014 11:19:07
Hallo zusammen
Da die Datei grösser als 300kB ist, kann ich leider keine Excel hochladen.
Also das Einfügen des sogenannten Wert (Auftrag) der Zelle geht nicht. Genau gesagt der Wert auf F2 sollte dann auf FlasherDaten auf Spalte O (wenn auf Spalte O ein Wert, dann nachfragen ob es überschreiben oder in Spalte P schreiben soll).
Wenn Sie möchten können Sie Ihre E-Mail angeben, dann kann ich die Excel-Datei zuschicken.
Ich habe provisorisch eine Word Datei erstellt mit Print Screens. Siehe Anhang
https://www.herber.de/bbs/user/92070.doc
Bei Fragen bitte nachfragen, Vielen Dank & Liebe Grüsse
Pascal
Betrifft: AW: Code funktioniert nicht
von: Rudi Maintaire
Geschrieben am: 13.08.2014 14:06:07
Hallo,
Da die Datei grösser als 300kB ist,
dann speck sie ab.
Was sollen wir mit Screenshots?
Gruß
Rudi
Betrifft: AW: Code funktioniert nicht
von: Pascal
Geschrieben am: 14.08.2014 10:21:36
https://www.herber.de/bbs/user/92095.zip
Guten Tag
Jetzt habe ich die Datei abgespeckt.
LG Pascal
Betrifft: AW: Code funktioniert nicht
von: fcs
Geschrieben am: 16.08.2014 16:11:07
Hallo Pascal,
merkwürdig ist schon einmal, dass der Code, den du in deiner Eingangsfrage gepostet hast, anders ist als in der Datei.
Im geposteten Code vergleichst du Werte mit Spalte AA in der Datei mit Spalte CC.
Die Spalte CC ist komplett leer. Dadurch läuft der Code komplett durch, denn die Zeile
If .Range("CC" & lSpalte_AA).Value <> "" Then
wird nie True.
Ob diese fehlenden Werte oder eine falsche Spalte im Code das Problem sind kann man als außenstehender nicht beurteilen. Da müsstest du ggf. mal den Ersteller der Makros kontaktieren.
Außerdem ist es keine so gute Idee, den Zeilen-Zähler lSpalte_AA bei 1 beginnen zu lassen, wenn die relevanten Daten ab Zeile 11 beginnen.
Gruß
Franz
Betrifft: Unsignierte Meldung
von: Luc:-?
Geschrieben am: 13.08.2014 10:36:39
Wohin ist der Code denn gegangen, Pascal,
issa nu wech…? ;-]
Ansonsten schließe ich mich Rudi an!
Gruß!