Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Hilfe bei erweiterung Macro
#61
Hallo,

dann muss auch in der Abfrage es genauso stehen

PHP-Code:
If InStr(1arrData(iCnt), "Sachnummer Kunde     :") > 0 Then 

bzw. versuchs ohne die :

PHP-Code:
If InStr(1arrData(iCnt), "Sachnummer Kunde") > 0 Then 

Achtung: Dies gilt auch für die Codezeile mit dem Auto7518!!!!!
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#62
Hallo, habe noch einen Fehler gefunden, bzw sogar den ausschlaggebenden.

Diese beiden Striche fehlten glaube ich. ( ¦Sachnummer Kunde     : )

Jetzt springt er ins Auto7518 aber bricht dann bei:
Code:
.Range("A2").PasteSpecial xlPasteAll
          ab.


Ich habe auch mal testweise die Makroausführung durch die MsgBox ausgabe ersetzt.  Es kommen insgesammt 3 Meldungen.

1. Die Nummer+¦  am Ende
2. Die Verpackungsnummer+¦  am Ende
3. die MsgBox von Errorhändler
Antworten Top
#63
Hallo,

durch diese

Code:
.Range("A2:A233").ClearContents


wird vermutlich die Zwischenablage gelöscht, versuche es so

Code:
.Range("A2:A233").Value = ""

und entferne doch bitte die beiden Striche am Ende.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#64
Hallo, 

die Striche sind ja nicht von mir. Die gibt der so aus, aber auf jeden Fall das makro läuft jetzt durch.

Allerdings 2 mal, da leider ja Sachnummer Kunde auch 2 mal vorkommt.
Antworten Top
#65
Hallo,

das hatte ja auch André in diesem Beitrag schon geschrieben. Setze einfach nach der Auto7518 Codezeile ein

Code:
Exit For

dann wird es nur einmal durchlaufen.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#66
Hallo,    ok jetzt nur noch einmal. Aber Errorhändler MSG kommt immer noch(gut kann man ja wegnehmen)

Aber wie steuert man jetzt, das er den Abruf in das richtige Blatt packt?
Jetzt spricht er jedesmal das eine Makro an. Hab zumindest 2 getestet.

Aber um noch mal auf meine Version zurückzukommen.
Könnte ich das nicht auch benutzen um die erste Zeile nach dem Wort Abruf zu durchsuchen? Um bei Ja mein kleines Macro zu starten?
Habs schon gefunden, aber warum kommt jedesmal die Msg vom Error? Auch wenn das durchläuft?

Wenn die Fehleranzeige richtig läuft, also Fehler bei irgendwas anderem in der Ablage, ansonsten sauberer Durchlauf, dann wäre mir das so schon ausreichend. Dann lasse ich mir das wie jetzt auch schon durch euren Code in die Temp speichern und mache dann weiter.
Antworten Top
#67
Hallo,

(22.06.2017, 10:30)M.Wichmann schrieb: Aber wie steuert man jetzt, das er den Abruf in das richtige Blatt packt?
Jetzt spricht er jedesmal das eine Makro an. Hab zumindest 2 getestet.

Aber um noch mal auf meine Version zurückzukommen.
Könnte ich das nicht auch benutzen um die erste Zeile nach dem Wort Abruf zu durchsuchen? Um bei Ja mein kleines Macro zu starten?

???? Bisher dachte ich das sich deine Makros ziemlich ähnlich sind. Ob es Makro1 oder Auto7518 oder Makro2 oder sonstwie heißt. Immer das gleiche außer dem Namen der Tabelle. Jetzt habe ich doch meine Zweifel.

Natürlich kannst Du mit dem Code auch dein kleines Makro starten. Einfach die entsprechenden Änderungen vornehmen und die Variableninhalte beim Einzelschrittmodus anschauen.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#68
Meine Makros sind auch fast gleich aufgebaut, bis auf das die halt immer ein anderes Blatt ansprechen.

Ich hatte es eigentlich so verstanden, das dein bzw euer Code dazu gedacht ist, die Zwischenablage auszulesen, und dann je nachdem um welchen Artikel es sich handelt, entsprechend den weiteren Ablauf zu steuern. Praktisch das was ich jetzt über Umwege mit Zwischenspeichern, auslesen und Abfragen mache, alles in einem Code.

Aber passt schon so, wenn nur noch die Errormeldung wegfällt wenn der Code durchläuft.


Auf jeden Fall schon mal vielen Dank für die Bemühungen.
Antworten Top
#69
Habe jetzt das folgendermaßen Geändert:


Code:
Public Sub TextFromClipr()
 'Variablendeklarationen
 'Objekt, Variant, Long
 Dim oData As New DataObject, arrData, iCnt&
 'Bei Fehler gehe zu Fehlerbehandlung
 'z.B. Grafik statt text
 On Error GoTo errorhandler
 'Daten aus der Zwischenablage holen
 oData.GetFromClipboard
 'Daten anhand Zeilenvorschub in Array splitten
 arrData = Split(oData.GetText, vbLf)
 'Schleife ueber alle Elemnte des Arrays
 For iCnt = 0 To UBound(arrData)
    'Wenn der Kennstring enthalten ist, dann
    If InStr(1, arrData(iCnt), "Lieferabruf nach VDA-Norm 4905") > 0 Then
     
'      Einfügen des Abrufes in Temp
      Sheets("Temp").Select
      Range("A2").Select
      ActiveSheet.Paste
    'Ende Wenn der Kennstring enthalten ist, dann
    Exit For
    End If
 'Ende Schleife ueber alle Elemnte des Arrays
 Next
errorhandler: MsgBox ("Es ist kein Abruf in der Ablage")
End Sub
Funktioniert auch wunderbar, kopiert wirklich nur die Abrufe, keinen anderen Text oder andere Objekte.
Aber wie gesagt selbst wenn alles richtig Durchläuft kommt die Meldung vom Errorhandler.
Antworten Top
#70
Hallo,

Code:
Public Sub TextFromClipr()
  'Variablendeklarationen
  'Objekt, Variant, Long
  Dim oData As New DataObject, arrData, iCnt&
  'Bei Fehler gehe zu Fehlerbehandlung
  'z.B. Grafik statt text
  On Error GoTo errorhandler
  'Daten aus der Zwischenablage holen
  oData.GetFromClipboard
  'Daten anhand Zeilenvorschub in Array splitten
  arrData = Split(oData.GetText, vbLf)
  'Schleife ueber alle Elemnte des Arrays
  For iCnt = 0 To UBound(arrData)
     'Wenn der Kennstring enthalten ist, dann
     If InStr(1, arrData(iCnt), "Lieferabruf nach VDA-Norm 4905") > 0 Then
      
'      Einfügen des Abrufes in Temp
'       Sheets("Temp").Select
'       Range("A2").Select
'       ActiveSheet.Paste
       'ohne selektieren
       Worksheets("Temp").Range("A2").Paste
     'Ende Wenn der Kennstring enthalten ist, dann
     Exit For
     End If
  'Ende Schleife ueber alle Elemnte des Arrays
  Next
  Exit Sub
errorhandler: MsgBox ("Es ist kein Abruf in der Ablage")
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste