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

Fehler in VBA Prg

Fehler in VBA Prg
26.01.2023 16:19:37
Alfred
https://www.herber.de/bbs/user/157491.txt
Hallo, ich habe ein kleines Rätsel (kein Problem). ich habe ein Sub in zwei verschiedenen Versionen: Version 1 funktioniert tadellos, macht Alles so, wie ich mir das vorstelle.
Bei Version 2 dachte ich mir, ob ich nicht das ganze abkürzen könnte, indem ich nicht zwei Variable für den Vergleich deklariere, sondern gleich die entsprechenden Zellen mittels val vergleiche..
Da kommt nur Sche.... raus. Warum, ist mir nicht klar.
Gegen welches "Gesetz" habe ich da verstoßen ?
Dankbar für jeden Tip..

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler in VBA Prg
26.01.2023 16:51:45
Daniel
naja, beim zweiten Code kommt gar nichts raus, den hast du einfach nur so hingeschrieben, der hat den VBA-Editor noch nicht gesehen und wurde daher auch noch nie getestet.
hättest du das gemacht, hätte dir sofort auffallen müssen, dass bei den IFs das THEN fehlt. Diese Zeilen werden dir im VBA-Editor ja rot markiert.
gibt noch ein paar weitere Merkmale, an denen man das erkennt.
also da kommt nicht Sch...e raus, sondern da kommt gar nichts raus, weil der Code so nicht laufen kann.
Bitte die Hausaufgaben selber machen, bevor du hier fragst.
Gruß Daniel
AW: Fehler in VBA Prg
26.01.2023 16:53:34
GerdL
Siehe auch:
Hinweis
Die Val-Funktion erkennt nur den Punkt ( . ) als gültiges Dezimaltrennzeichen. Wenn verschiedene Dezimaltrennzeichen verwendet werden, wie in internationalen Anwendungen, verwenden Sie stattdessen CDbl, um eine Zeichenfolge in eine Zahl umzuwandeln.
Gruß Gerd
Anzeige
AW: Fehler in VBA Prg
26.01.2023 16:53:38
Rudi
Hallo,
Gegen welches "Gesetz" habe ich da verstoßen ?
sollen wir deine Tabelle nachbauen?
Lad die Datei hoch.
Gruß
Rudi
Abkürzen
27.01.2023 14:22:46
Yal
Hallo Alfred,
es ist ein BIschen Code Kata...
Wenn man die Variablen rausschmeisst, die nicht verwendet werden, die With strategischer einsetzt und die Grenzbedingungen in For-Schleife gedacht optimiert, kann man den Code tatsächlich abspecken. Da es auf Version1 basiert, sollte es funtionieren. Ansonsten wären es Tippfehler.
Variabledeklaration (in "Extras", "Optionen") musst Du unbedingt auf erforderlich setzen.
Sub markierung()
Dim a, x, y
Dim hitL%, hitP%
    
    For x = zeileGezogen - Cells(zeileGezogen, 2).Value + 1 To zeileGezogen 'wo kommt zeileGezogen her?
        hitL = 0
        hitP = 0
        For y = 3 To 8 ' wenn überall nur y + 3 verwendet wird, dann direkt in Grenzbedingungen einbauen
            With Cells(x, y)
                For a = 11 To 16
                    If Cells(zeileGezogen, a).Value = .Value Then
                        .Interior.Color = vbGreen
                        hitL = hitL + 1
                        Cells(x, 25) = hitL
                    End If
                    If Cells(zeileGezogen, a + 8).Value = .Value Then
                        .Font.Color = vbRed
                        hitP = hitP + 1
                        Cells(x, 26) = hitP
                    End If
                    If Cells(zeileGezogen, 17).Value = .Value Then
                        .Interior.Color = vbMagenta
                        .Font.Color = vbRedYellow
                    End If
                Next a
            End With
        Next y
        Cells(x, 27).Interior.Color = vbYellow
    Next x
End Sub
VG
Yal
Anzeige
AW: Abkürzen
27.01.2023 21:31:06
Alfred
Hallo Yal, danke für die informative Hilfe. Für mich war besonders neu und wichtig die im Soure-Code "versteckten" Infos über die Zuweisungen von Eigenschaften. Bis jetzt habe ich immer gemeint, dass Das nur mit with geht. Die anderen Tricks zum Abspecken des Codes erscheinen einem bei genaueren hinschaun "eh logisch". Leicht blöd dahergeredet - oder ? Aber wenn was nicht funktioniert, wie man sichs vorstellt, drehen sich irgendwann die Gedanken im Kreis. Ich habe VBA anhand eines Bändchens mit 300 Seiten gelernt. Meine erste Programmiererei erlernte ich 1984 bei einem COBOL-Kurs. Weiß irgendwer auf dieser Welt noch, was das ist ? Auf jeden Fall wurde der Quellcode damals noch auf Lockarten übersetzt. Später kam dann noch der Spaghetti-Code in Basic dazu und Assembler auf einem C128. Dann war lange Pause....
Also, so freundliche und informative Hilfe trifft man nicht so oft - Danke

Anzeige
Vielen Dank für die Rückmeldung
27.01.2023 22:24:39
Yal
Hallo Alfred,
wir sehen hier jede Menge Frage und jede Menge unterschiedlichen Bedürfnisse und Wissensstände. Es ist nie einfach zu entdecken, welche Motivationen hinter der Frage stehen. Richtige Unbeholfenen und möchte-gerne-Lösung-umsonst-bekommen reihen sich aneinander. Daher kannst Du nachvollziehen, dass deine Frage nicht richtig zugeordnet wurde.
Es freut mich, dass es dir Licht bringen kann, das dir zu weiteren Schritte verhelfen wird.
Zum "With": with ist nichts anderes als "alles was mit einem Punkt anfängt, bezieht sich auf diesem With, mit dem Ziel Wiederholungen zu vermeiden. Also
Cells(x, y).Value
Und
With Cells(x, y)
    .Value
End With
sind absolut das gleiche. In dem Fall macht man aus einer Zeile drei. Was nicht effektiv ist. Hatte man mehreren Cells(x, y). ... nacheinander bringt die Verlagerung in einem with ein leichter lesbaren Code.
VG
Yal
Anzeige
AW: Vielen Dank für die Rückmeldung
28.01.2023 06:21:43
Alfred
Hallo,
jetzt entwickelt sich da Ganze zur angenehmen Plauderei. Bei dem Programm, das ich das zusammengeflickt habe, handelt es sich um eine Lotto-Simulation. Nicht zum Spielen, sondern eher zu Abschreckung; wenn man sich die Auswertung anschaut: eine Tabelle mit hunderten Zeilen ohne einen nennenswerten Treffer. Wenn es Dich interessiert, kann ich Dir den Code ja schicken, nur wird das über dieses Forum nicht gehn.
Wie Du vielleicht bemerkt hast, bin ich nicht mehr der Jüngste. Daher ist für mich VBA, Schach spielen u.Ä. Gehirnjogging. Wie man den Körper fit halten sollte, muss man das auch mit dem Hirn machen. Zum richtig gut Programmiere fehlt mir die Geduld......Aber man muss ja auch seine Fehler haben.
Schöne Grüße
Alfred
Anzeige
AW: Vielen Dank für die Rückmeldung
28.01.2023 13:24:17
Yal
Hallo Alfred,
Datei hochladen geht ganz gut, wenn auch unüblich:
Auf dem Knopf "zum File-Upload",
Datei-Filter auf "*.*" setzen,
Datei auswählen (Max 300 kb) hochladen,
gegebenen Datei-Link kopieren und
Im Posting einfügen.
VG
Yal

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige