🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[Gelöst] Übergabe Variable hakt

Alles zur Programmierung im LibreOffice.
Antworten
Linux_Idefix
Beiträge: 3
Registriert: Do 3. Okt 2024, 04:13

[Gelöst] Übergabe Variable hakt

Beitrag von Linux_Idefix » Do 3. Okt 2024, 04:28

Guten Tag
ich bin neu im Forum und habe noch keine Erfahrung mit der Programmierung. Aber ich benutze seit einiger Zeit ein Makro, das mir einen Barcode generiert und plötzlich funktioniert es nicht mehr. Ich habe herausgefunden, dass nach dem Update die Übergabe der Variablen hängt, kann mir jemand helfen, wie ich das Programm wieder zum Laufen bekomme?


Meldung in der Zelle = Fehler:509
Fehler in der Zeile= "If Len(chaine$) = 12 Then"
Meldung "BASIC-Laufzeitfehler. Argument ist nicht optional."




Vielen Dank im Voraus.

Idefix

Code: Alles auswählen

 Public Function ean13$(chaine$)
  'V 1.0
  'Paramètres : une chaine de 12 chiffres
  'Retour : * une chaine qui, affichée avec la police EAN13.TTF, donne le code barre
  '         * une chaine vide si paramètre fourni incorrect
  Dim i%, checksum%, first%, CodeBarre$, tableA As Boolean
  ean13$ = ""
  'Vérifier qu'il y a 12 caractères
  If Len(chaine$) = 12 Then
    'Et que ce sont bien des chiffres
    For i% = 1 To 12
      If Asc(Mid$(chaine$, i%, 1)) < 48 Or Asc(Mid$(chaine$, i%, 1)) > 57 Then
        i% = 0
        Exit For
      End If
    Next
    If i% = 13 Then
      'Calcul de la clé de contrôle
      For i% = 2 To 12 Step 2
        checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
      Next
      checksum% = checksum% * 3
      For i% = 1 To 11 Step 2
        checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
      Next
      chaine$ = chaine$ & (10 - checksum% Mod 10) Mod 10
      'Le premier chiffre est pris tel quel, le deuxième vient de la table A
      CodeBarre$ = Left$(chaine$, 1) & Chr$(65 + Val(Mid$(chaine$, 2, 1)))
      first% = Val(Left$(chaine$, 1))
      For i% = 3 To 7
        tableA = False
         Select Case i%
         Case 3
           Select Case first%
           Case 0 To 3
             tableA = True
           End Select
         Case 4
           Select Case first%
           Case 0, 4, 7, 8
             tableA = True
           End Select
         Case 5
           Select Case first%
           Case 0, 1, 4, 5, 9
             tableA = True
           End Select
         Case 6
           Select Case first%
           Case 0, 2, 5, 6, 7
             tableA = True
           End Select
         Case 7
           Select Case first%
           Case 0, 3, 6, 8, 9
             tableA = True
           End Select
         End Select
       If tableA Then
         CodeBarre$ = CodeBarre$ & Chr$(65 + Val(Mid$(chaine$, i%, 1)))
       Else
         CodeBarre$ = CodeBarre$ & Chr$(75 + Val(Mid$(chaine$, i%, 1)))
       End If
     Next
      CodeBarre$ = CodeBarre$ & "*"   'Ajout séparateur central
      For i% = 8 To 13
        CodeBarre$ = CodeBarre$ & Chr$(97 + Val(Mid$(chaine$, i%, 1)))
      Next
      CodeBarre$ = CodeBarre$ & "+"   'Ajout de la marque de fin
      ean13$ = CodeBarre$
    End If
  End If
End Function
es
 
Zuletzt geändert von Linux_Idefix am Fr 4. Okt 2024, 19:05, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: Übergabe Variable hakt

Beitrag von karolus » Do 3. Okt 2024, 10:11

Hallo

Mit dem Update hat sich die maximal Anzahl an Spalten erhöht.
Deine Funktionsname kollidiert mit der real existierenden Zelladresse EAN13

Ändere alle Vorkommen von ean13$ um in zb. ean_13$
Meldung "BASIC-Laufzeitfehler. Argument ist nicht optional."
Natürlich ist das »Argument nicht optional«
Du kannst eine UDF die mit einem Argument aufgerufen werden muss nicht direkt in der Basic-IDE ohne Argument ausführen!
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Linux_Idefix
Beiträge: 3
Registriert: Do 3. Okt 2024, 04:13

Re: Übergabe Variable hakt

Beitrag von Linux_Idefix » Do 3. Okt 2024, 13:37

Hallo Danke für die schnelle Antwort

Ich habe die Variable unbenennt leider kein Erfolg!!!
Natürlich ist das »Argument nicht optional«
Du kannst eine UDF die mit einem Argument aufgerufen werden muss nicht direkt in der Basic-IDE ohne Argument ausführen!
Kann ich in so einen Fall etwas tun, denn das Programm ist bist zum Update auf die neueste Version ohne Probleme gelaufen, oder ist ein Einstellungsproblem?

MfG Idefix

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: Übergabe Variable hakt

Beitrag von karolus » Do 3. Okt 2024, 19:03

Hallo
Ich habe die Variable unbenennt leider kein Erfolg!!!
nur zur Klarheit, ich schrieb alle… also einmal im funktionskopf und noch zweimal im Code selbst, und in Calc musst du selbstverständlich die Formeln ebenfalls umstellen!
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Linux_Idefix
Beiträge: 3
Registriert: Do 3. Okt 2024, 04:13

Re: Übergabe Variable hakt

Beitrag von Linux_Idefix » Fr 4. Okt 2024, 19:04

Danke

es schnurrt wie am 1. Tag

Schönes WE


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten