Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
636to640
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
636to640
636to640
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabelle auswerten 2te

Tabelle auswerten 2te
17.07.2005 15:18:02
Hanno
Hi,
JRobert hat mir auf meine Anfrage von 11.07.05 geantwortet.
Leider kam ich nicht früher ins I-Net. Danke dir für den Post.
Allerdings komme ichnicht so ganz klar.
Hier noch mal Dein Post:
Hallo Nanno,
hier ein kleines Macro.
Grüß Robert
Type MeineDaten
SerienNummer As Long
Defekt As Long
Fehler As Long
End Type
Dim MDaten(230) As MeineDaten, tmpMDaten As MeineDaten
Public

Sub Zählen()
AnfangsZeile = 5
AnzahlSerienNummer = 0
For i = AnfangsZeile To AnfangsZeile + 30
tmpSerienNummer = Cells(i, 3)
If tmpSerienNummer <> "" Then
gefunden = False
For k = 1 To AnzahlSerienNummer
If tmpSerienNummer = MDaten(k).SerienNummer Then
MDaten(k).Defekt = MDaten(k).Defekt + Cells(i, 4)
MDaten(k).Fehler = MDaten(k).Fehler + Cells(i, 5)
gefunden = True
Exit For
End If
Next k
If Not gefunden Then
AnzahlSerienNummer = AnzahlSerienNummer + 1
MDaten(AnzahlSerienNummer).SerienNummer = tmpSerienNummer
MDaten(AnzahlSerienNummer).Defekt = Cells(i, 4)
MDaten(AnzahlSerienNummer).Fehler = Cells(i, 5)
End If
End If
Next i
'Sortieren nach Spalte D
Do
keine_umstell = True
For i = 1 To AnzahlSerienNummer - 1
tmpMDaten = MDaten(i)
If tmpMDaten.Defekt < MDaten(i + 1).Defekt Then
MDaten(i) = MDaten(i + 1)
MDaten(i + 1) = tmpMDaten
keine_umstell = False
End If
Next i
Loop Until keine_umstell = True
'Ausgabe für Spalte D
For i = 1 To AnzahlSerienNummer
Cells(39 + i, 5) = MDaten(i).SerienNummer
Cells(39 + i, 6) = MDaten(i).Defekt
Next i
'Sortieren nach Spalte E
Do
keine_umstell = True
For i = 1 To AnzahlSerienNummer - 1
tmpMDaten = MDaten(i)
If tmpMDaten.Fehler < MDaten(i + 1).Fehler Then
MDaten(i) = MDaten(i + 1)
MDaten(i + 1) = tmpMDaten
keine_umstell = False
End If
Next i
Loop Until keine_umstell = True
'Ausgabe für Spalte E
For i = 1 To AnzahlSerienNummer
Cells(50 + i, 5) = MDaten(i).SerienNummer
Cells(50 + i, 6) = MDaten(i).Fehler
Next i
End Sub

Wenn ich das Macro in ein Modul reinkopiere wird Public rot angezeigt. Fehlermeldung : Bezeichner fehlt
Leider weiss ich nicht was ich hier jetzt angeben soll.
Wenn ich Public auskommentiere geht das Macro nach dem Aufruf in Stop beim Befehl:
MDaten(AnzahlSerienNummer).SerienNummer = tmpSerienNummer
mit der Fehlermeldung: Laufzeitfehler13 Typen unverträglich.
Könntest Du mir hier noch mal helfen? Natürlich darf mir auch jeder andere helfen.
Danke Dir/Euch
Gruß
Hanno

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle auswerten 2te
17.07.2005 15:37:51
Reinhard
Hi Hanno,
das sind 2 verschiedene Dinge. Der Server hier hat einen Fehler, er trennt die Zeile
Public Sub Zählen() fälschlicherweise (ich musste tricksen damit es jetzt nicht passiert)
weil er auf das Sub reagiert, also schreib das in eine zeile und fertig.
der Typemismatch kommt weil die beiden variablen unterschiedlich deklariert sind (siehe
beispielcode, da tritt der gleiche Fehler auf), habe jetzt keine Zeit zu prüfen wie man
das ändert im Code, schau halt mal selbst nach Dim bzw. diesem Type (bei type müßte ich in
der Hilfe nachlesen as es genau macht).
Ggfs bringt ja bald jmd. hier die Lösung oder ich schaue heute Abend nochmal rein.
Gruß
Reinhard
Sub tt()
Dim a As String, b As Integer
b = a
End Sub

Anzeige
AW: Tabelle auswerten 2te
17.07.2005 15:44:19
Hanno
Danke Reinhard,
hab das mit dem Public schon geändert und funzt.
Ich probiere mal noch etwas rum. Sollte ich den Fehler finden poste ich das hier rein.
Ansonsten wäre es nett Du noch mal schaust heute abend oder wenn mir da sonst noch mal jemand unter "die Arme greift".
Gruß
Hanno
AW: Tabelle auswerten 2te
17.07.2005 16:02:24
Hanno
Hi einen "Fehler" habe ich gefunden.
In meiner Muster-Tabelle nach welcher JRobert das Macro erstellt hat waren 5stellige Zahlen angegeben.
In der Originaltabelle sind allerdings auch Zahlen enthalten die durch einen Schrägstrich ( / ) geteilt sind enthalten. Das geht anderes nicht.
Daher wohl die Fehlermeldung mit den Typenunverträglichkeiten.
Ich habe den Typ jetzt in Variant geändert. So weit ich das sehe funzt das jetzt.
Danke an alle die sich hier rege beteiligt haben und an die welche generell hier und in anderen Foren uns un- bzw. wenigwissende bzw. auf dem Schlauch stehende hilfreich zur Seite stehen.
Gruß
Hanno
Anzeige
AW: Tabelle auswerten 2te
17.07.2005 16:17:50
Reinhard
Hi hanno,
es ist unklar welchen teil der mit "\" getrennten Zahlenstringe du haben willst
x=1234\56789
x=left(x,intr(x,"\")-1) = 1234
x=mid(x,intr(x,"\")+11) = 56789
x=left(x,intr(x,"\")-1) & mid(x,intr(x,"\")+11) =123456789
(für den letzen befehl könnte es einen kürzeern direktbefehl geben, weiss das grad nicht)
Gruß
Reinhard
AW: Tabelle auswerten 2te
17.07.2005 16:24:08
Hanno
Hi Reinhard,
ist eigentlich egal wo der (/) Schrägstrich steht.
Mit dem Typ Variant funzt das ganze.
Der Schrästrich wird lediglich gebraucht um Doppelteile kenntlich zu machen.
Bei der Auswertung brauche ich natürlich dann auch diese Teile und muss daher den Typ Variant haben.
Dieser Schrägstrich wird bei der Dateneingabe eingegeben und muss mit dem Makro nicht weiter ausgewertet werden.
Gruß
Hanno
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige