Hallo Leute,
kann mir jemand helfen mit der Rangsortierung . Es muß nach verschiedenen
Größen sortiert werden = 4 in der Anzahl ( Benutzerdefiniert ),
das heist natürlich mit Formeln.
Hallo Kay,
ich schlage vor, nicht einen existierenden Thread endlos fortzuschreiben, sondern bei einem neuen Thema auch tatsächliche einen neuen Thread anzulegen. Das entspricht auch dem Geist des Forums. Es soll ja anderen Benutzern die Chance gegeben werden, bei ähnlichen Problemstellungen auf bereits existierende Lösungen zuzugreifen und solche Lösungen auch zu finden.
Zu Ihrem neuen Problem:
Si greifen sowohl aus dem Zeilenbereich 3:38 auf den Bereich 47:90 zu, als auch umgekehrt. Daher erscheinen nach den Sortierungen unerwartete Ergebnisse.
Konkret: Nehmen wir die Sortierung „Platzziffer_FA“
Der Spieler „Feiertag, C.“ (C32) hat Platz 1 (P32).
In Zelle P32 steht die Formel „=$K$52“, die als Ergebnis den Wert 1 hat.
Durch die Sortierung nach Platzziffern (Spalte P) rutscht der Spieler „Feiertag, C.“ mit seinem Ergebnis 1 in die Zeile 3.
In Zelle C52 haben Sie den Namen „Feiertag, C.“ per Formel (=$C$32) aus dem oberen Teil des Blattes geholt. Durch die Sortierung verschwindet aber der Spieler „Feiertag, C:“ aus der Zeile 32, er rutscht – wie schon gesagt – nach Zeile 3.
In Zeile 32 erscheint nach der Sortierung der Spieler „Kupsch, A.“. Also erscheint dieser Spieler jetzt auch in Zelle A52.
Zur Lösung des Problems ersetzen Sie in C47:C90 die Formeln durch die Werte (Bereich markieren > Strg+C > Rechtsklick auf Zelle C47 > Kontextmenü: Einfügeoptionen „Klemmbrett mit 123“).
Generell schlage ich vor, nur eine Liste mit den Teilnehmerdaten zu führen. Das könnte das Blatt „Starterliste“ sein. Dort hat jeder Teilnehmer eine laufende Nummer, die als Identmerkmal verwendet werden kann. Im Blatt „Wetkampf“ verwenden Sie dann nur die Identnummern und holen die Namen, Geburtstag, Verein usw. aus der Starterliste.
Mit freundlichen Grüßen
Dieter Klemke
Schön, dass Ihre Frage beantwortet wurde!
Um weiterhin auf dem Laufenden zum Thema Technik und PC zu bleiben, nehmen Sie doch kostenlos teil an unseren monatlichen LIVE-Webinaren: hier klicken für Registrierungsseite. Bei diesen Online-Shows können Sie uns all Ihre Fragen rund um das Thema Computer stellen und lernen jeden Monat etwas Neues.
Hallo kay,
in der Anlage füge ich Ihnen eine Lösung für 4 gleichmäßige Größenstufen und eine Lösung für ungleichmäßige Stufen bei.
Falls das Ihr Problem nicht trifft, dann wäre es schön, wenn Sie eine Beispielarbeitsmappe mit zusätzlichen Erläuterungen hochladen könnten.
Mit freundlichen Grüßen
Dieter Klemke
Hallo kay,
Sie können in einer Hilfsspalte (hier AD) die folgende Formel verwenden:
=H20+WENN(J20>0;J20/100;0)-WENN(K20>0;K20/10000;0)
In Spalte L verwenden Sie dann die Formel:
=RANG(AD20;$AD$20:$AD$36;0)
Eine Sortierung ist nicht erforderlich
Mit freundlichen Grüßen
Dieter Klemke
Hallo Herr Klemke,
die Formel ist ein Hammer,geht Perfekt. Danke dafür.
Gibt es dafür ein kurzes Makro ohne Aufzeichnung , das geht bei mir.
Platzziffer, von kleinste zur größten Zahl
Für die Hilfe wäre ich Ihnen Dankbar.
Kann man die Formel bis ins Undendliche ziehen ?.
MfG Kay.
Hallo kay,
vielen Dank für die freundlich Rückmeldung.
Wenn Sie die Rangfolge umgekehrt haben wollen, also der kleinste Wert bekommt Rang 1, dann wählen Sie in der Formel als dritten Parameter anstelle der 0 eine 1, vgl Zelle U20:
=RANG(AD20;$AD$20:$AD$36;1)
Die Formel kann beliebig erweitert werden, bei 100 Teilnehmern hätten Sie in L20 die Formel:
=RANG(AD20;$AD$20:$AD$119;0)
Die Rangbestimmung kann man auch per Makro durchführen. Da ich hier keine Arbeitsmappe mit Makros hochladen kann, habe ich die Mappe ebenfalls bei Web.de platziert:
Beantwortete Frage von klemke Mai 28, 2019
Hallo Herr Klemke,
das war leider nicht richtig . Ich meinte eigentlich das der 1.ganz oben steht,
dann der 2.,3.,4.,5., usw, sortiert angezeigt wird, in Reihe nach unten
1
2
3
4
Ich danke Ihnen im Vorraus.
MfG Kay.
Hallo Kay,
ich habe Ihnen das VBA-Programm um eine Sortierung ergänzt.
Die Arbeitsmappe finden Sie wieder bei Web.de
Beantwortete Frage von klemke Mai 30, 2019
Hallo Herr Klemke,
das Makro funktioniert ganz gut ,bis wenn an letzter Stelle ein Name steht,
wenn kein Name an letzter Stelle steht, dann funktionert das Makro nicht , erst wenn ein Name wieder drin steht .
Im obersten Bereich funktioniert es komischer weise.
MfG Kay
Hallo Kay,
ich bin davon ausgegangen, dass die Tabelle voll besetzt ist.
Das Programm bestimmt automatisch die letzte belegte Zelle in Spalte B und arbeitet die Zeilen von 20 bis zu dieser letzten Zeile ab.
Ich habe das Programm jetzt so ergänzt, dass nur Zeilen berücksichtigt werden, die in Spalte B einen nicht-leeren Wert haben.
Beantwortete Frage von klemke Mai 31, 2019
Hallo Herr Klemke,
es müssen die Zeilen berücksichtigt werden, die einen nicht leeren Wert + leeren Wert in der Spalte B haben , damit die leeren Zeilen zwischendurch nach unten rutschen können .Es kommt nämlich vor ,das bei der Startaufstellung die eine oder andere Bahn freibleibt, je nach Anzahl der Spieler .
MfG Kay.
Hallo Kay,
es tut mir leid, aber die Bedingung verstehe ich nicht. In welcher Spalte soll der nicht-leere Wert stehen?
Könnten Sie eine Beispieldatei (*.xlsx) hochladen (unten auf die Schaltfläche „Durchsuchen…“ klicken) oder bei Web.de einstellen.
In der Beispieldatei bitte ein Tabellenblatt mit der Ausgangssituation und ein Tabellenblatt mit der gewünschten Ergebnissituation. Ich versuche dann, mich mit dem VBA-Programm darauf einzustellen.
Mit freundlichen Grüßen
Dieter Klemke
Hallo Herr Klemke,
ich habe die Tabelle noch einmal herrgestellt, das heist, in der Pz -Spalte bleiben die von Ihnen erstellte Rangformel bestehen-nicht rausnehmen.Es muß nur noch ein Makro erstellt werden – ein kurzes , welches die Spalte Pz sortiert. Habe 2 neue Bilder rechts neben der Tabelle mit eingefügt. Einmal Benutzerdefinierte Sortierung und ein aufgezeichnetes Makro . Ein Makro wo ich nur noch draufklicke .
Hallo Kay,
ich hab das Programm wunschgemäß auf die Sortierung beschränkt. (Schaltfläche „Sortierung“)
Beantwortete Frage von klemke Juni 2, 2019
Hallo Herr Klemke,
die Tabelle funktioniert einwandfrei,danke dafür.Da kann man nur staunen wie Sie das machen.
Ein Anliegen hätte ich noch. Ich besitze ein Wordvorlage- Urkunde , Platz 1-3.
Die Namen und die Gesamtergebnisse müssten eine Verbindung mit der Exceltabelle haben,damit die Namen und die Ergebnisse automatisch eingetragen werden.
Die Position Zeilenhöhe müsste dabei beachtet werden.Könnten Sie mir dabei helfen, da wäre ich Ihnen dankbar dafür.Dann wäre alles perfekt.
MfG Kay.
Hallo kay,
vielen Dank für die freundlich Rückmeldung.
Ich will gerne versuchen, Ihnen bei dem Problem mit den Urkunden zu helfen.
Könnten Sie dazu die Wordvorlage hochladen? Die Excel-Tabelle habe ich ja bereits.
Wie ist die Bemerkung mit der Zeilenhöhe gemeint? Vielleicht können Sie ein ausgefülltes Beispiel einer Urkunde (mit einem Fantasienamen) beifügen.
Mit freundlihen Grüßen
Diter Klemke
Hallo Herr Klemke,
danke für Ihre Hilfe.
Beantwortete Frage von kay Juni 6, 2019
Hallo Kay,
vielen Dank für die Unterlage.
Ich habe aus dem Word-Dokument eine Word-Vorlage mit nur einer Seite gemacht.
Sie findet sich hier
Beantwortete Frage von klemke Juni 7, 2019
Hallo Herr Klemke,
die Verbindung ist der Hammer, wenn man noch die 3 einzelne in eine Worddatei bekommt,dann wäre es toll.Wenn es so programiert wird ( Datei -drucken-Einstellungen=Aktuelle Seite drucken, dann kann man es noch einmal anschauen,bevor gedruckt wird.Wenn es möglich ist , in der vorherigen Arbeitsmappe noch eine Sperre mit einzufügen, das heist , das bevor Sigerurkunde erstellt wird muß geprüft werden,ob Platzziffer in geordneter Reihenfolge vorhanden ist,auch bei ( 1-1-3 ), wenn nicht, dann MSg-Box- Info
( Platzziffer sortieren ).Wenn man das so hinbekommt, das die Worddatei im kleinen Format öffnen kann das wäre toll.
https://c.web.de/@337246920575549833/cSO_QI8gQtSY1Fpf5Acffw
MfG Kay.
PS: Schöne Pfingsten noch.
Hallo Kay,
ich habe das Programm so ergänzt, dass vor der Erstellung der Urkunden nach Platzziffer sortiert wird. Die drei Urkunden werden zu einem Dokument zusammengefasst und Word wird mit diesem Zusammenfassungsdokument dargestellt.
Word muss zuvor einmal durch Klick auf die Schaltfläche „Verkleinern“ (rechts oben) so positioniert und zugeschnitten werden, wie Sie es für die Darstellung parallel zu Excel haben wollen.
Mit freundlichen Grüßen
Dieter Klemke
Hallo Herr Klemke,
lange nichts gehört, ich möchte mich für die sachen, erst einmal ,nochmals vielen Dank sagen. Es funktionert alles tadellos, das ist ja richtig fantastisch. Ich habe auch noch eine größere Tabelle mit Meisterschaft angelegt , Männer – A + Männer – B, unabhängig davon kann jeweils in der Vorrunde und Endrunde die Plazierung schnell und in geordneter Reihenfolge sofort an der Beamerwand darstellen.Jetzt habe ich eine größere Sache anstehen mit 36 Keglern , Paarkampf und Einzel.Jeder Spieler hat eine Startnummer. Ich möchte wärend der Meisterschaft die Kegler austauschen können , die noch nicht gekegelt haben, das heist, in einem Tabellenbereich ,zum Beispiel Startnummer 3 ist gleich Zeile 5, soll in Zeile 15 Startnummer 18 ausgetauscht werden mit rechten Anhang. Ich möchte das die 3 in 18 eingetragen wird und die 18 in die 3 automatisch übernommen wird. Ich möchte nicht extra die Zeile kopieren und nach rechts verschieben und die andere dann dort einfügen.Alles zu umständlich . Ich würde ihnen wieder eine Tabelle schicken. Ich danke Ihnen im Vorraus für die freundliche Unterstützung.PS: das ist eine 2.Mappe, die vernüpft ist mit Mappe 1
Mfg Kay.
Hallo Kay,
denkbar ist ein VBA-Programm, welches folgende Verarbeitung ausführt:
Sie geben die beiden zu vertauschenden Zeilen an, z.B. indem Zelle A5 und Zelle A15 markiert wird, um Ihr oben genanntes Beispiel aufzugreifen.
Dann machen Sie einen Rechtsklick auf eine der beiden markierten Zellen. Dabei wird automatisch eine Worksheet_BeforeRightClick-Prozedur gestartet, die die Vertauschung der Zeilen vornimmt.
Konkret lässt sich das aber nur anhand Ihrer Arbeitsmappe sagen. Bitte senden Sie mir Ihre Arbeitsmappe (Werte verändert und/oder anonymisiert) und ggf. auch die 2. Mappe dazu.
Mit freundlichen Grüßen
Dieter Klemke
Hallo Herr Klemke,
ich schicken Ihnen ersteinmal ein anderes Problem. Bitte im Link sehen.
https://c.web.de/@337246920575549833/hiqf-Y3JSKuidxBBIpuj-g
Mfg Kay.
klemkeschrieb:
Hallo Kay,
denkbar ist ein VBA-Programm, welches folgende Verarbeitung ausführt:
Sie geben die beiden zu vertauschenden Zeilen an, z.B. indem Zelle A5 und Zelle A15 markiert wird, um Ihr oben genanntes Beispiel aufzugreifen.
Dann machen Sie einen Rechtsklick auf eine der beiden markierten Zellen. Dabei wird automatisch eine Worksheet_BeforeRightClick-Prozedur gestartet, die die Vertauschung der Zeilen vornimmt.
Konkret lässt sich das aber nur anhand Ihrer Arbeitsmappe sagen. Bitte senden Sie mir Ihre Arbeitsmappe (Werte verändert und/oder anonymisiert) und ggf. auch die 2. Mappe dazu.Mit freundlichen Grüßen
Dieter Klemke
kayschrieb:
klemkeschrieb:
Hallo Kay,
denkbar ist ein VBA-Programm, welches folgende Verarbeitung ausführt:
Sie geben die beiden zu vertauschenden Zeilen an, z.B. indem Zelle A5 und Zelle A15 markiert wird, um Ihr oben genanntes Beispiel aufzugreifen.
Dann machen Sie einen Rechtsklick auf eine der beiden markierten Zellen. Dabei wird automatisch eine Worksheet_BeforeRightClick-Prozedur gestartet, die die Vertauschung der Zeilen vornimmt.
Konkret lässt sich das aber nur anhand Ihrer Arbeitsmappe sagen. Bitte senden Sie mir Ihre Arbeitsmappe (Werte verändert und/oder anonymisiert) und ggf. auch die 2. Mappe dazu.Mit freundlichen Grüßen
Dieter Klemke
Hallo Klemke,
ich habe diese Datei noch einmal hochgeladen. Ich würde mich freuen,wenn es klappen würde. Ich Danke Ihnen im voraus.
https://c.web.de/@337246920575549833/aMlrBYXAQX6VeIAWcwsA4g
In der Datei steht ganz unten noch eine Beschreibung dazu.
MfG Kay.
Hallo Kay,
denkbar ist ein VBA-Programm, welches folgende Verarbeitung ausführt:
Sie geben die beiden zu vertauschenden Zeilen an, z.B. indem Zelle A5 und Zelle A15 markiert wird, um Ihr oben genanntes Beispiel aufzugreifen.
Dann machen Sie einen Rechtsklick auf eine der beiden markierten Zellen. Dabei wird automatisch eine Worksheet_BeforeRightClick-Prozedur gestartet, die die Vertauschung der Zeilen vornimmt.
Konkret lässt sich das aber nur anhand Ihrer Arbeitsmappe sagen. Bitte senden Sie mir Ihre Arbeitsmappe (Werte verändert und/oder anonymisiert) und ggf. auch die 2. Mappe dazu.
Mit freundlichen Grüßen
Dieter Klemke[/quote][/quote][/quote]
Hallo Kay,
ich habe Ihnen die folgende Worksheet_BeforeRightClick-Prozedur in Ihre Arbeitsmappe eingefügt:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Long
Dim maxZeile As Long
Dim rngAuswahl As Object
Dim rng(1 To 2) As Range
Dim zelle As Range
Dim zf As String
maxZeile = Me.Rows.Count
Set rngAuswahl = Selection
If TypeName(Selection) <> „Range“ Then
MsgBox Prompt:=“Bitte wählen Sie zwei komplette Zeilen aus.“
GoTo Ende
End If
If rngAuswahl.Areas.Count <> 2 Then
MsgBox Prompt:=“Bitte wählen Sie zwei komplette Zeilen aus.“
Exit Sub
End If
For i = 1 To 2
Set rng(i) = rngAuswahl.Areas(i)
If rng(i).Address <> rng(i).EntireRow.Address Then
MsgBox Prompt:=“Bitte wählen Sie jeweils komplette Zeilen aus.“
GoTo Ende
End If
Set rng(i) = rng(i).Resize(1, 10)
For Each zelle In rng(i).Cells
zf = BezugAbsolut(zelle.Formula)
If zf <> „“ Then
zelle.Formula = zf
End If
Next zelle
Next i
rng(1).Copy Destination:=Me.Cells(maxZeile, „A“)
rng(2).Copy
rng(1).PasteSpecial xlPasteFormulas
Me.Cells(maxZeile, „A“).Resize(1, 10).Copy
rng(2).PasteSpecial xlPasteFormulas
Application.CutCopyMode = xlCut
Me.Rows(maxZeile).Delete
rng(1).Resize(1, 1).Select
Ende:
Cancel = True
End Sub
Function BezugAbsolut(Formel As String) As String
Dim pos As Long
Dim zf1 As String
Dim zf2 As String
pos = InStrRev(Formel, „!“)
If pos = 0 Then
Exit Function
End If
zf1 = Left$(Formel, pos)
zf2 = Right$(Formel, Len(Formel) – pos)
zf2 = Me.Range(zf2).Address
BezugAbsolut = zf1 & zf2
End Function
Die Prozedur steht im Codemodul des betreffenden Tabellenblattes (Rechtsklick auf das Blattregister und „Code anzeigen“ auswählen).
Sie wenden die Prozedur folgendermaßen an:
Sie markieren die beiden zu vertauschenden Zeilen komplett (1. Zeile markieren, Strg-Taste festhalten und 2. Zeile markieren).
Dann machen Sie einen Rechtsklick auf irgendeine Zelle aus den beiden markierten Zeilen. Dadurch wird das Programm ausgelöst und die beiden Zeilen (im Bereich A bis J) werden vertauscht.
Die Zellen in dem zu vertauschenden Bereich enthalten Bezüge auf 2 verschiedene andere Arbeitsmappen. Diese Arbeitsmappen müssen verfügbar sein, damit das Programm arbeiten kann (Sie müssen nicht geöffnet sein).
Ein Teil der Bezüge ist relativ geschrieben, das macht beim Vertauschen Probleme. Das Programm ersetzt daher automatisch bei den zu vertauschenden Zeilen die relativen Bezüge durch absolute (d.h. es werden $-Zeichen hinzugefügt).
Ich bin jetzt bis Anfang September im Urlaub. Wenn es noch Nachfragen zu dem Programm gibt, dann kann ich mich leider erst Anfang September wieder darum kümmern.
Die ergänzte Arbeitsmappe finden Sie hier:
https://c.web.de/@309245993977646633/Sc9yEZ3eTTilFSBjx_I-rw
Viele Grüße und weiterhin viel Erfolg
Dieter Klemke
Hallo Herr Klemke,
ich möchte mich erst einmal für die große Hilfe bedanken, die ich bis jetzt von Ihnen erhalten habe. Die ganzen VBA -Projekte funtionieren einfach klasse.Ich hatte eine große Meisterschaft im September ausgetragen, wo ich 30 Urkunden zu drucken hatte.Auch mal zwischendurch – ein Klick und da waren auch die Urkunden schon da.
Hätte da noch ne bitte an Sie. Ich bräuchte 2 VBAs,wo ich eine bestimmte Tabelle aus einer Mappe als E-Mail , als xls oder als Pdf verschicken kann.Ich benutze Excel 2010 , wo er dann aber das Sheet als xlsx umwandelt und als Mail verschicken möchte.
Die 2 VBAs müssten für alle gängigen Mailprogramme funktionieren.Ich wäre Ihnen sehr dankbar , wenn Sie mich in diesem Projekt noch einmal unterstützen würden.Dann wäre dieses Projekt vollständig.
Mfg Kay.
Hallo Kay,
ich stelle Ihnen 3 Dateien aus meinem Schulungsmaterial zum Download zur Verfügung. Mit Hilfe der darin enthaltenen Programme sollte sich Ihr Problem lösen lassen.
Beim Mail-Versand beschränkt sich meine Erfahrung allerdings auf Outlook, zu einem Progamm, welches den E-Mail-Versand über jedes gängige Mail-Programm bewerkstelligt, kann ich leider nicht weiterhelfen.
1. Programm, um ein oder mehrere Tabellenblätter als PDF zu speichern:
https://c.web.de/@309245993977646633/Nf2JcyQpS4uW6JMKOh4F4w
2. Tabellenblatt als xls-Arbeitsmappe speichern (Format Excel 97-2003):
https://c.web.de/@309245993977646633/J52nkv73Tb-1hba_7ecupg
3. Datei als E-Mail-Anlage per Outlook verschicken
https://c.web.de/@309245993977646633/sPzDp7RHSN2i2ARIANODXQ
Mit freundlichen Grüßen
Dieter Klemke
Hallo Herr Klemke,
komme nicht ganz richtig damit zurecht.Habe eine Mappe download bereitgestellt.darin enthalten ein Makro.Im 1. Tabellenblatt ist eine Beschreibung,wie ich das gern hätte.Das Makro ist gelb hinterlegt im DKB -Blatt.
https://c.web.de/@337246920575549833/_-2XiaHSSYmcVmhxWRmWng
Ich danke Ihnen schon mal voraus.
MfG Kay.
Hallo Kay,
mit der folgenden Prozedur können Sie das Blatt „DKB“ als xls-Arbeitsmappe per E-Mail verschicken. Vor der Verschickung werden die Schaltflächen aus dem Blatt „DKB“ entfernt. Sie machen ja für den Empfänger keinen Sinn, da er die zugehörigen Programme nicht hat.
Bei Verwendung von Outlook bekommen Sie ggf. einen Warnhinweis, der besagt, dass per Programm versucht wird eine Mail zu verschicken. Klicken Sie bei diesem Hinweis auf die Schaltfläche „Erteilen“, um Outlook die Erlaubnis zu erteilen, die Mail zu versenden.
Programm:
Sub TabellenblattVerschicken()
Dim btn As Button
Dim pfad As String
Dim rec As Rectangle
Dim sh As Shape
Dim wb As Workbook
Dim ws As Worksheet
Dim xls_Datei As String
xls_Datei = „DKS.xls“
Set wb = ThisWorkbook
pfad = wb.Path & „“
Set ws = wb.Worksheets(„DKB“)
On Error Resume Next
Workbooks(xls_Datei).Close Savechanges:=False
Kill pfad & xls_Datei
On Error GoTo 0
ws.Copy
With ActiveWorkbook.Worksheets(1)
For Each btn In .Buttons
btn.Delete
Next btn
For Each rec In .Rectangles
rec.Delete
Next rec
End With
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=pfad & xls_Datei, _
FileFormat:=xlExcel8
Application.DisplayAlerts = True
ActiveWorkbook.SendMail Recipients:=“test@test.de“, _
Subject:=“Spielbericht vom “ & Date
ActiveWorkbook.Close Savechanges:=True
End Sub
Zum Versand des Blattes als PDF schicke ich Ihnen in den nächsten Tagen eine zweite Prozedur.
Mit freundlichen Grüßen
Dieter Klemke
Hallo Herr Klemke,
ich verwende Thunderbird,das VBA Projekt dazu, funktioniert tadellos.nur eines gibt es,wenn diese verschickte Mappe vom Empfänger geöffnet wird oder wenn diese abgespeichert wird und dann geöffnet wird, kommt dann das Meldungsfenster ( Verknüpfungen bearbeiten ) .Sozusagen müssten immer die vorhandenen mit geöscht werden ,wie die Makros.Ich hätte noch einen wunsch zu xls und Pdf, das man mehrere Mails auf einmal verschicken kann.Kann man dazu eine Sammelmappe erstellen, die im Vba Projekt oder auf dem Blatt erstellen kann.Bei den Tabellenblättern nicht nur eine ,sondern meherere auswählen kann. Dies kann bei größeren Veranstaltungen vorkommen.Wie gesagt , das erste Projekt geht wunderbar, man kann diese nocheinmal kontrollieren, ob das richtige Tabellenblatt ist,weil nämlich die Registerkarte zusehen ist.
Vielen Dank.
MfG Kay.
Hallo Kay,
ich schlage vor, schittweise vorzugehen.
Ich habe das Programm zum Versand des Blattes „DKB“ so ergänzt, dass vor dem Versand alle Formeln durch ihre Werte ersetzt werden.
Das Programm sieht dann folgendermaßen aus:
Sub TabellenblattVerschicken()
Dim ar As Range
Dim btn As Button
Dim pfad As String
Dim rec As Rectangle
Dim rng As Object
Dim sh As Shape
Dim wb As Workbook
Dim ws As Worksheet
Dim xls_Datei As String
Dim zelle As Range
xls_Datei = „DKS.xls“
Set wb = ThisWorkbook
pfad = wb.Path & „“
Set ws = wb.Worksheets(„DKB“)
On Error Resume Next
Workbooks(xls_Datei).Close Savechanges:=False
Kill pfad & xls_Datei
On Error GoTo 0
ws.Copy
With ActiveWorkbook.Worksheets(1)
For Each btn In .Buttons
btn.Delete
Next btn
For Each rec In .Rectangles
rec.Delete
Next rec
.Unprotect Password:=“AABBAABBAABZ“
On Error GoTo KeineFormeln
Set rng = .UsedRange.SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
For Each ar In rng.Areas
For Each zelle In ar.Cells
zelle.Value = zelle.Value
Next zelle
Next ar
KeineFormeln:
.Protect Password:=“AABBAABBAABZ“
End With
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=pfad & xls_Datei, _
FileFormat:=xlExcel8
Application.DisplayAlerts = True
ActiveWorkbook.SendMail Recipients:=“test@test.de“, _
Subject:=“Spielbericht vom “ & Date
ActiveWorkbook.Close Savechanges:=True
End Sub
Als nächstes schicke ich Ihnen dann – wie bereits angekündigt – ein Programm, um ein Tabellenblatt als PDF zu verschicken.
Anschließend können wir Erweiterungen ins Auge fassen.
Mit freundlichen Grüßen
Dieter Klemke
Hallo Herr Klemke,
es funktioniert bestens, einfach super. ( Mit Thunderbirth ) Keine Formel mehr vorhanden – einfach Spitze.
MfG Kay.
Hallo Kay,
vielen Dank für die freundliche Rückmeldung.
Mit dem Versand des Blattes „DKB“ als PDF ist das leider nicht so einfach.
Ich kann da nur eine Lösung anbieten, die den Versand über Outlook abwickelt. Outlook verfügt – wie alle Office-Programme – auch über VBA und ist daher auch von Excel her per VBA-Programm ansprechbar.
Das Versandprogramm sieht folgendermaßen aus:
Sub BlattAlsPDFverschicken()
´ Tabellenblatt „DKB“ als PDF verschicken
Dim anlage As String
Dim betreff As String
Dim btn As Button
Dim empfänger As String
Dim mail_text As String
Dim olAktiviert As Boolean
Dim olApp As Object
Dim olMI As Object
Dim pdfDatei As String
Dim pfad As String
Dim rec As Rectangle
Dim wb As Workbook
Dim ws As Worksheet
´##############################################################
´ Hier ggf. Anpassungen vornehmen
betreff = „Spielbericht vom “ & Format$(Date, „dd.mm.yyyy“)
empfänger = „test@test.de“
empfänger = „dieter.klemke@t-online.de“
mail_text = „In der Anlage ist der neue Spielbericht beigefügt.“ & _
vbNewLine & _
„Mit freundlichen Grüßen“ & vbNewLine & _
„Der Platzwart“
´##############################################################
pdfDatei = „DKB.pdf“
Set wb = ThisWorkbook
pfad = wb.Path & „“
Set ws = wb.Worksheets(„DKB“)
For Each btn In ws.Buttons
btn.Delete
Next btn
For Each rec In ws.Rectangles
rec.Delete
Next rec
ws.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=pfad & pdfDatei
anlage = pfad & pdfDatei
´ Outlook aktivieren
On Error Resume Next
Set olApp = GetObject(Class:=“Outlook.Application“)
If Err <> 0 Then
Set olApp = CreateObject(„Outlook.Application“)
olAktiviert = True
End If
On Error GoTo 0
´ Mail versenden
Set olMI = olApp.CreateItem(0) ´ olMailItem = 0
With olMI
.Body = mail_text
.To = empfänger
.Subject = betreff
.Attachments.Add anlage, 1 ´ olByValue = 1
.Send
End With
If olAktiviert Then
´ 30 Sekunden warten, damit Outlook die Mail
´ senden kann, bevor es geschlossen wird.
Application.Wait Time:=Now + TimeSerial(0, 0, 30)
olApp.Quit
End If
Set olMI = Nothing
Set olApp = Nothing
End Sub
Viele Grüße
Dieter Klemke
Hallo Herr Klemke,
ich habe diese Woche eine Meisterschaft ( Ranglistenturnier ) im Kegeln der Jugend U14.Sie haben mir ja schon eine Sortierformel erstellt =I12+WENN(H12>0;H12/100;0)-WENN(J12>0;J12/10000;0) . Beim Ranglistenturnier der jüngeren Generation sieht das ein bischen anders aus. Wenn =I12+WENN(H12>0;H12/100;0)-WENN………………………………………… muß beim 2.wer die meisten Volle hat geordnet werden. Diesmal werden die Fehlwürfe außeracht gelassen. Also wer die meisten Abräumer hat und die meisten Volle hat .Ich danke Ihnen im vorraus.
MfG Kay.
Ich habe was ausprobiert.
Ich habe einfach aus dem – ein + gemacht.Ist das dan auch so korrekt ?
Hallo Kay,
könnten Sie mir eine repräsentative Beispieldatei schicken, in der die gewünschte Rangfolge manuell eingestellt ist?
Mit freundlichen Grüßen
Dieter Klemke
Hallo Herr Klemke,
anbei den Link wieder zum runterladen –
https://c.web.de/@337246920575549833/WP4Cg4MUS46A1cT0AW0OPA
Spalte J ist gleich
dann bei Abräumer ,wer die meisten hat
wenn die gleich sind
wer die meisten Volle hat.
Ihre beiden Formeln Stehen mit drin, ( Rangformel und Hilstabelle )
beim letzten Vergleich habe ich nur aus dem – ein + gemacht,
Ist das so richtig? Oder was muß noch verändert werden.
MfG Kay.
Hallo Kay,
soweit ich die Regeln verstehe, ist die Formel in Spalte K (Hilfstabelle) korrekt.
Mit freundlichen Grüßen
Dieter Klemke
Hallo Herr Klemke,
ich brauche wieder mal Ihre Hilfe,
in der Corona Zeit habe ich mich wieder intensiv mit meiner Rangfunktion beschäftigt ,Tabelle. Da habe ich festgestellt, das eine Spalte mit Startnummern für den Endlauf in umgekehrter Reihenfolge noch mit eingefügt werden kann.Die sollen aber erst mit sortiert werden,wenn man den Vorlauf beendet hat.Makro Vorschlag = Sag Endlaufüberschrift G1-K1 beendet , dann klick auf Sartnummer L1 und gib die Startnummern frei, 1 oben dann 2,3,4,5,6,7,8. ist meine Vorstellung.Sie sind der Profi,
Sie wissen wie es am besten und einfachsten geht.
Bitte anklicken,danke Ihnen im voraus.
https://c.web.de/@337246920575549833/blkWUs6ZR0WfWH-JMFw1GA
MfG Kay.
Hallo Kay,
ich habe Ihr Problem so verstanden, dass Sie bei den beiden Sortierungen nach Platznummer und nach Startnummer die Spalte L von der Sortierung ausnehmen wollen.
Ich habe daher die beiden entsprechenden Programme so ergänzt, dass vor der Sortierung der Inhalt von Spalte L zwischengespeichert wird, nach der Sortierung wird er zurückgespeichert und der Zwischenspeicher gelöscht.
Die Arbeitsmappe können Sie über den folgenden Link herunterladen
Beantwortete Frage von klemke Mai 20, 2020
Hallo Herr Klemke,
habe es ausprobiert . Die Startnummer – Endlauf wird sortiert nach klick, aber keine Freigabe fürs sortieren nach Eingabe Spalte O – ( Gesamt ).
Mein Gedanke, wenn Startnummer – Enlauf sortiert, dann noch freigeben fürs flexible sortieren, wenn in Spalte O – ( Gesamt – Endlauf ) irgendwo eine Zahl größer als 0 ist.
Und bitte das so schreiben , das das Programm nicht zuckelt. Ich habe sonst
Application.ScreenUpdating = False und
Application.ScreenUpdating = True eingefügt
Vielen Dank im Voraus.
MfG Kay.
Hallo Kay,
leider konnte ich mich erst jetzt wieder um ihr Problem kümmern.
Ich habe jetzt die Arbeitsmappe um eine Worksheet_Change-Prozedur ergänzt, die auf Eingabe von Werten in Spalte O reagiert. Wenn dort ein Wert >0 eingegeben wird, dann wird die Prozedur „Startnummer_Endlauf_sortiert“ ausgeführt.
Die Arbeitsmappe kann hier heruntergeladen werden Beantwortete Frage von klemke Mai 29, 2020
Hallo Herr Klemke,
es funktioniert nicht, habe keine Erweiterung gefunden.
Ich meinte eigentlich,
wenn ich auf den Butten klicke ( Startnummer – Endlauf ) , werden die Nummern
von 87654321 auf 12345678 sortiert.
Wenn dann in Spalte O, der Wert größer als 0 ist ,dann sollen die Startnummern ( Startnummern – Endlauf ) in Spalte L flexibel mit sortiert werden, und die Zwischenspeicherung wird aufgehoben.
Wenn in Spalte O der Wert =0 wieder ist, dann beginnt es von vorne wieder.( Neuer Wettkampf ) .
Das heißt , z.B. 54236817 . usw.
Wenn man auf Platz gesamt sortiert klickt, dann werden sie mit sortiert , und bleiben nicht in einer Reihe stehen.
Ich danke Ihnen im voraus.
MfG Kay.
Hallo Herr Klemke,
habe heute noch eine Schrittaufzeichnung als Pdf hochgeladen.
Seite 11 – Step 21 – Spalte L.
Die Startnummern werden jeweils zum Namen nach Freigabe immer mitgenommen.
Hier der Link.
https://c.web.de/@337246920575549833/61c-r462SsSRan_Pgu26aw
MfG Kay.
Hallo Kay,
es tut mir leid, aber ich steige aus dem Problem aus. Ich verstehe zuwenig von Ihrer Sportart.
Ich hoffe, dass sich jemand aus der Community findet, der sich des Problems annehmen kann.
Mit freundlichen Grüßen
Dieter Klemke
Hallo Herr Klemke,
vor einiger Zeit haben Sie mir mit dem Makro Zeilen vertauschen geholfen, ab Spalte – A.
Nun bräuchte ich ein geändertes Makro, ab Splate – B.
könnten Sie mir bitte wieder behilflich sein, bei Erstellung des neuen Makros.
Ich habe es probiert, aber leider klappte es nicht, mit Austausch des Buchstaben – A zu B.
Das Makro ist in der Datei mit vorhanden, das von Ihnen damals geschrieben wurde.
Ich würde mich freuen, wenn es klappen würde, ich habe nächste Woche Sonnabend das 1.große Kegelprojekt nach der langen Corona – Pause.
Anbei der Link zum runterladen.
https://c.web.de/@337246920575549833/QvTVF7TKRu6I98irB9VtqQ
Ich danke Ihnen voraus.
MfG Kay.
Hallo Kay,
ich habe das Programm so angepasst, dass der Zeileninhalt erst ab Spalte B getauscht wird.
Insgesamt wird der Inhalt von 10 Spalten (B bis K) getauscht.
Hallo Herr Klemke,
vielen Dank an die vorhergehenden Programme.
Ich habe habe eine bitte.Können Sie bitte in den nachfolgenden Progamm eine kleine Umschreibung machen. ( Von Ihnen geschrieben ).
= Mappenname aus D8 ( = Mannschaftsname ) gegen R8 ( = Mannschaftname )bitte umschreiben, danke.
Sub TabellenblattVerschicken()
Dim btn As Button
Dim pfad As String
Dim rec As Rectangle
Dim sh As Shape
Dim wb As Workbook
Dim ws As Worksheet
Dim xls_Datei As String
xls_Datei = „DKS.xls“ = Mappenname aus D8 gegen R8 bitte umschreiben, danke.
Set wb = ThisWorkbook
pfad = wb.Path & „“
Set ws = wb.Worksheets(„DKB“)
On Error Resume Next
Workbooks(xls_Datei).Close Savechanges:=False
Kill pfad & xls_Datei
On Error GoTo 0
ws.Copy
With ActiveWorkbook.Worksheets(1)
For Each btn In .Buttons
btn.Delete
Next btn
For Each rec In .Rectangles
rec.Delete
Next rec
End With
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=pfad & xls_Datei, _
FileFormat:=xlExcel8
Application.DisplayAlerts = True
ActiveWorkbook.SendMail Recipients:=“test@test.de“, _
Subject:=“Spielbericht vom “ & Date
ActiveWorkbook.Close Savechanges:=True
End Sub
Ich danke Ihnen im vorraus.
MfG Kay.
PS: Vieleicht klappt es bis Sonnabend, da kann ich es am Sonntag beim Punktspiel ( Kegeln ) anwenden, danke.
Hallo Kay,
bitte stellen Sie Ihre Arbeitsmappe zum Download bereit.
Dann will ich gern versuchen, das Programm zu ändern.
MfG
Dieter Klemke
Hallo Herr Klemke,
anbei den Link zum Downloaden.
https://c.web.de/@337246920575549833/JGNUuLn7Tv-hfJQvoIjzyA
PS: DKB. soll raus, war( Dierektvorgabe ).
Danke ,
MfG Kay.
Hallo Kay,
ich habe Ihnen das Programm entsprechend ergänzt.
Sie können es hier herunterladen
https://c.web.de/@309245993977646633/PubMkq9WTCy5H6B0IunyyQ
Viele Grüße und viel Erfolg beim Turnier
Dieter Klemke
Hallo Herr Klemke,
vielen Dank für die Ergänzung.Es hat wunderbar funktioniert.Ich hätte eine bitte an Sie.
Könnten sie mir bitte als Ergänzung noch was dazuschreiben.Dann wäre diese Makro komplett vollständig und perfekt.
Und zwar beim Mail Versand die Spielnummer aus L8 beim Betreff dazumachen. Vor dem Datum soll es stehen.
Und die Mail soll erst geöffnet werden zum kontrollieren und erst dann abgeschickt werden. Ich wäre Ihnen Dankbar dafür,
wenn es klappen würde.Die Mappe haben Sie ja.
Die Spielnummer steht zwischen den beiden Mannschaftsnahmen . Spiel Nr ( L8 ).
Danke Ihnen vorraus.
MfG Kay.
Hallo Kay,
ich habe das Programm um die Spielnummer ergänzt und stelle es unter dem folgenden Link zur Verfügung
https://c.web.de/@309245993977646633/ovx6dSK4SvyPZxhMXhBQLQ
Um die Mail vor dem Versenden erst anzuschauen, brauchen Sie Outlook.
Falls Sie Outlook einsetzen, kann ich Ihnen das Programm entsprechend ergänzen.
Mit freundlichen Grüßen
Dieter Klemke