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

Probleme mit Macro

Probleme mit Macro
Rüdiger
Hallo,
ich habe Probleme mit dem Macro "Sub Schiriz_Gruppe_1()" in der beigefügten Datei!
https://www.herber.de/bbs/user/72147.xls
Wenn Ihr im Tabellenblatt auf das Ikon Schirizettel klickt, geht das Arbeitsblatt Schiriz auf und wenn Ihr dann auf dem Schirizettel Euch die Zelle AH15 anseht steht darin "Gruppe 1", das ist aber falsch!
Im Macro wird aber nach dem Inhalt im Arbeitsblatt der "Gruppe 1 nach dem Inhalt der Zelle AR1" gefragt. Und da steht 1-2!
Man könnte das Macro bestimmt auch besser machen aber bitte lasst es, wenn es geht, so wie es ist!
Jetzt aber meine Frage:
WARUM steht da "Gruppe 1" und nicht "1-2", wo hat das Macro den Text her?!
Helft mir bitte!

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zell Formatierung?
04.11.2010 11:25:03
Dieter
Hi Rüdiger,
kann es sein, dass lediglich in der Tabelle Gruppe1 die Zelle AR1 und in Schiriz, Zelle AH15, falsch formatiert sind? Wenn ich deine Tabellen ansehe, dann ist in Shririz, AH15, die Formel zu sehen, aber kein Ergebnis der Formel. habe mal die darüberliegende Zelle in AH15 kopiert, dann den Bezug per Formel auf Tabelle Gruppe1 Zelle AR1, gesetzt. Dann zeigt die Zelle wohl das richtige Ergebnis.
Habe sonst keine andere Idee. Evtl. hilft's.
Gruss, Dieter (Drummer)
AW: Zell Formatierung?
04.11.2010 11:55:24
Rüdiger
Hallo Dieter,
entschuldige bitte mal zuerst, in der Zelle ar1 steht "1-2", diese Zahl habe ich aus Versehen gelöscht!
Die Formatierung sollte in allen Zellen "text" sein (im Original habe ich überall Text stehen), da es sich um Zahlen mit trennungsstrich handelt, würde in der Zelle eine Berechnung stehen!
Du hast recht in der Zelle AH15 im Schirizettel steht die Formel, von wo die Daten hergeholt werden. Nur dort steht etwas anders als in die Zelle geschrieben wird! Wo hat das Marco diesen Text her?
Ich hoffe Du oder jemand anderes kann mir helfen.
Noch etwas, ich habe mir ein Korrektur-Maro von einem Deiner Kollegen schreiben lassen, das im Macro VBAProject (Personal.WLS)/Module/Modul1 steht.
Der Ausdruck des Schirizettels hat ja schon einmal funktioniert, dann aber auf einmal ist, ich weiß nicht warum, ist das Korrektur-Macro aufgegangen, und seitdem klappt es mit dieser Zelle nicht mehr.
Ich vermute es nur, dass der Fehler das Korrektur-Macro gemacht hat!
Ich hoffe, Du verstehst was ich meine
Wenn Du Fragen haben solltest, leg los.
Gruß Rüdiger Bernhard
Anzeige
AW: Macro VBAProject (Personal.WLS)/Module/Modul1
04.11.2010 12:33:43
Dieter
Dieses VBA-Projekt kann ich nicht einsehen, das es nur in deinem Verzeichnis liegt. Dieses Makro steht auch wohl jeder Mappe zur Verfügung, wenn du sie aufrufst. Wodurch die entsprechenden Zellen bei Schiri etc. NICHT als STANDARD formatiert sind und entsprechend auch kein Formelergebnis zeigen können.
Wenn man das Korrekturmakro einsenehn kann, könnte einer der VBA Spezialisten im Forum evtl. helfen.
Gruss, Dieter (Drummer)
AW: Macro VBAProject (Personal.WLS)/Module/Modul1
04.11.2010 12:43:10
Rüdiger
Hallo Dieter,
hier das Korrektur-Macro:
Denke darn, ich vermute es!
Gruß Rüdiger
Public Function Korrektur(Rang As Range, Rang_bereich As Range, _
Ergebnisse As Range, Balldifferenz As Range) As Long
'Ermittlung der Rangkorrektur auf Basis der Spiele gegeneinander wenn 2 oder _
mehr Spieler gleiche Punktzahl und Satzgewinne.
Dim Zeile As Long, AnzMehrfach As Long, iIndex As Long, iRang As Long
Dim sErgebnis As String
Dim arrTemp(), arrHilf(), Zeile_Korrektur As Long
'On Error GoTo Fehler
'Häufigkeit des Ranges in der im Rangbereich (1. Auswertung)
AnzMehrfach = Application.WorksheetFunction.CountIf(Rang_bereich, Rang.Value)
ReDim arrTemp(1 To AnzMehrfach, 1 To 6)
ReDim arrHilf(1 To AnzMehrfach)
'Zeilennummern der Spieler mit identischem Rang einlesen in Spalte 1 des Arrays
For Zeile = 1 To Rang_bereich.Rows.Count
If Rang_bereich(Zeile, 1) = Rang.Value Then
iIndex = iIndex + 1
arrTemp(iIndex, 1) = Zeile
'Array-Zeile merken, in der der ggf. zu korrigierende Rang steht.
If Rang.Row = Rang_bereich(Zeile, 1).Row Then Zeile_Korrektur = iIndex
End If
Next
'Ergebnisse gegen ranggleiche Spieler einlesen und auswerten
For Zeile = 1 To AnzMehrfach
arrTemp(Zeile, 3) = 0 'Spalte in der Punkte gegen ranggleiche summiert werden
arrTemp(Zeile, 4) = 0 'Spalte in der Satzdifferenzen gegen ranggleiche summiert werden
arrTemp(Zeile, 5) = 0 'Spalte in der der Hilfswert für Auswertung der Ergebnisse _
gegeneinander eingetragen wird
arrTemp(Zeile, 6) = 0 'Spalte in der die Balldifferenzen gegen ranggleiche summiert werden
For iIndex = 1 To AnzMehrfach
If arrTemp(Zeile, 1)  arrTemp(iIndex, 1) Then
'Ergebnis des Spiels einlesen
sErgebnis = Application.WorksheetFunction.Index(Ergebnisse, _
arrTemp(Zeile, 1), arrTemp(iIndex, 1))
'Punkte aus Ergebnis ermitteln - 1 Punkt wenn gewonnen
'Linke Ziffer des Ergebnisses prüfen
If Left(sErgebnis, 1) = "3" Then
arrTemp(Zeile, 3) = arrTemp(Zeile, 3) + 1
End If
'Gesamt-Satzdifferenz - Differenz linke minus rechte Ziffer aufsummieren
arrTemp(Zeile, 4) = arrTemp(Zeile, 4) _
+ Val(Left(sErgebnis, 1)) - Val(Right(sErgebnis, 1))
'Balldifferenz des Spiels einlesen
sErgebnis = Application.WorksheetFunction.Index(Balldifferenz, _
arrTemp(Zeile, 1), arrTemp(iIndex, 1))
'Balldifferenz aufsummieren
arrTemp(Zeile, 6) = arrTemp(Zeile, 6) + Val(sErgebnis)
End If
Next
'Hilfswert für Korrekturberechnung ermitteln und in Spalte 5 des Array eintragen
'Berücksichtigt werden in der Reihenfolge Punkte, Satzdifferenz und Balldifferenz aus _
den Spielen gegen die ranggleichen Spieler
arrTemp(Zeile, 5) = arrTemp(Zeile, 3) * 100000 + arrTemp(Zeile, 4) * 1000 _
+ arrTemp(Zeile, 6)
arrHilf(Zeile) = arrTemp(Zeile, 5) 'Array mit Hilfswerten für Korrekturberechnung
Next
'Array mit Hilfswerten sortieren
Call QuickSort(VA_array:=arrHilf)
'Rang-Korrekturwert nach Vergleich der Hilfswerte in Spalte 2 des Hauptarrays eintragen
iRang = 0
For Zeile = AnzMehrfach To 1 Step -1
If Zeile  arrHilf(Zeile + 1) Then iRang = iRang + 1
End If
For iIndex = 1 To AnzMehrfach
If arrHilf(Zeile) = arrTemp(iIndex, 5) Then
arrTemp(iIndex, 2) = iRang
End If
Next
Next
'Korrekturwert dem Funktions-Ergebnis zuweisen
Korrektur = arrTemp(Zeile_Korrektur, 2)
Err.Clear
'Fehler:
'With Err
'Select Case .Number
'Case 0 'Alles ok
'Case Else
'MsgBox "Fehler-Nr.: " & .Number & vbNewLine & .Description
'End Select
'End With
End Function
Private Sub QuickSort(ByRef VA_array, Optional V_Low1, Optional V_high1)
'aus www.Herber.de Excel-Forum
On Error Resume Next
Dim V_Low2, V_high2, V_loop As Integer
Dim V_val1, V_val2 As Variant
If IsMissing(V_Low1) Then
V_Low1 = LBound(VA_array, 1)
End If
If IsMissing(V_high1) Then
V_high1 = UBound(VA_array, 1)
End If
V_Low2 = V_Low1
V_high2 = V_high1
V_val1 = VA_array((V_Low1 + V_high1) / 2)
While (V_Low2  V_val1 And _
V_high2 > V_Low1)
V_high2 = V_high2 - 1
Wend
If (V_Low2  V_Low1) Then Call _
QuickSort(VA_array, V_Low1, V_high2)
If (V_Low2 

Anzeige
AW: Sorry ...
04.11.2010 12:56:25
Dieter
... das geht über meine VBA Grundkenntnisse!
Meine letzte Idee: Rufe dieses Makro mal NICHT auf, wenn du deine Mappe aufmachst.
Ansonsten kann ich leider nicht weiterhelfen.
Gruss, Dieter (Drummer)
AW: Sorry ...
04.11.2010 14:14:41
Rüdiger
Hallo Dieter,
das Macro muss aufgerufen werden, sonst berechnet es nicht die Plazierungen.
Ausdrucke werden in einem anderen Tabellenblatt nach der Platzberechnung, die das Macro macht, ausgeführt!
Gruß Rüdiger
PS.
Wie komme ich jetzt an jemanden, der mir da weiter helfen kann?
AW: Hier muss ein/e Spezialist/in ran ...
04.11.2010 14:29:27
Dieter
... ich gehe davon aus, sollte jemand aus dem Forum helfen können/wollen, so werden sie sich melden. Allers was im Forum passiert, wird von vielen mitgelesen und bei Interesse oder Möglichkeit auch angezeigt.
Hier kannst du nur warten ... Ich kann leider nicht weiterhelfen.
Gruss, Dieter (Drummer)
Anzeige
AW: Hier muss ein/e Spezialist/in ran ...
04.11.2010 14:46:03
Rüdiger
Vielen Dank schon mal, dann warte ich eben!
Gruß Rüdiger
AW: Zell Formatierung?
04.11.2010 22:53:50
MichaV
Hallo,
wenn in den Zellen sowieso nur Text stehen darf, warum schreibst Du die Werte dann mit einer Formel rein? Versuch mal so, und baue den Rest des Makros entsprechend um.
'Von Gruppe 1 Einlesen
Range("c12") = Sheets("Gruppe 1").Range("a" & CStr(10)) 'Gruppe
Range("g15") = Sheets("Gruppe 1").Range("c" & CStr(i)) 'Uhrzeit
Range("p15") = Sheets("Gruppe 1").Range("e" & CStr(i)) 'Tisch-Nummer
Range("y15") = Sheets("Gruppe 1").Range("a" & CStr(i)) 'Spiel-Nummer
Range("ah15") = Sheets("Gruppe 1").Range("ar1") 'Klasse
Gruss- Micha
Anzeige
AW: Danke
05.11.2010 08:38:16
Rüdiger
Hallo Micha, funkioniert!
Gruß Rüdiger
Bitte
05.11.2010 09:34:53
MichaV
danke für die Rückmeldung ;o)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige