Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1772to1776
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
VBA – vorhandenes Makro flexibler machen
29.07.2020 08:29:10
Erwin
Sonnigen guten Morgen,
ich habe ein (altes) laufendes Makro, welches die letzten 3 Stellen eines Aktenzeichens separiert.
Allerdings ist es so starr eingesetzt, dass es nur für Tabellen passt, wo das Aktenzeichen ab E2 steht.
Ich würde das gerne über eine Inputbox gelöst haben wollen, sodass ich die Stelle, an der das 1. Aktenzeichen steht, einfach anklicken kann.
VBA und Testbeispiele in beiliegender Datei: https://www.herber.de/bbs/user/139370.xlsm
Vielen Dank
Erwin

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

Betreff
Datum
Anwender
Anzeige
AW: geraten
29.07.2020 09:03:11
Fennek
Hallo,
anstelle der festen Zuweisung zu Spalte "E" geht

Spalte = application.match("Aktenzeichen", activesheet.usedrange.rows(1),0)
ungeprüft, kann Tippfehler enthalten.
mfg
AW: geraten
29.07.2020 09:22:07
Erwin
Hallo Fennek,
danke schon mal für die Hilfe.
Ich weis leider gar nicht, wo ich das einfügen soll und was dafür raus müsste.
Bei mir erscheinen Fehlermeldungen wie "Laufzeitfehler 13. Typen unverträglich.
Was ist, wenn das Wort nicht "Aktenzeichen" heißt sondern nur "Aktenz."?
Kann man das nicht über eine Inputbox lösen, wo ich die Zelle des 1. Aktenzeichens anklicke?
Grüße - Erwin
Anzeige
AW: geraten
29.07.2020 09:25:52
MRUTOR
Hast du meine Loesung probiert?
AW: VBA – vorhandenes Makro flexibler machen
29.07.2020 09:06:43
MRUTOR
Hallo Erwin,
im Anhang deine Datei zurueck mit dem geaenderten Code. Es muss immer das erste Aktenzeichen selektiert werden und dann das Makro starten. Ich trage hier das Ergebnis ueber eine Schleife direkt ein, anstatt mit einer Formel zu arbeiten.
Gruss Torsten
https://www.herber.de/bbs/user/139371.xlsm
AW: VBA – vorhandenes Makro flexibler machen
29.07.2020 09:27:59
Erwin
Hallo Torsten,
auch dir danke für die Mühe.
Beim Verarbeiten der Datei steht der Cursor irgendwo, nur nicht auf dem "Aktenzeichen"
Ich bräuchte noch die Möglichkeit, den Cursor vorher zu platzieren (Inputbox), damit die Verarbeitung bei der richtigen Zelle beginnt.
Kannst du das bitte noch einbauen, dann wäre es perfekt?
Danke - Erwin
Anzeige
AW: VBA – vorhandenes Makro flexibler machen
29.07.2020 09:41:40
MRUTOR
Hallo Erwin,
dann den Code so ergaenzen:

Sub AKZN_9_11_trennen()
Dim strSp$, intSp%, lngLRow&, intUeb&
Dim rngSel As Range, strSel As String
On Error Resume Next
Set rngSel = Application.InputBox("Bitte erstes Aktenzeichen in der Liste auswaehlen", " _
Auswahl", Type:=8)
If rngSel Is Nothing Then Exit Sub
On Error GoTo 0
strSel = rngSel.Address
intUeb = Selection.Row - 1 'Anzahl Zeilen für Spaltenüberschrift (0 für ohne)
intSp = Selection.Column
lngLRow = Cells(Rows.Count, intSp).End(xlUp).Row
strSp = Mid(strSel, 2, 1)
Columns(intSp + 1).Insert                             'Hilfsspalte einfügen
If intUeb > 0 Then _
Cells(intUeb, intSp + 1) = "Endziff." 'Wort Endziff. einfüßgen
For c = intUeb + 1 To lngLRow
Cells(c, intSp + 1) = Right(Cells(c, intSp), 3) 'letzte 3 Stellen
Next
Cells(intUeb + 1, intSp).Select  '1. Aktenzeichen selektieren
End Sub
Gruss Torsten
Anzeige
AW: VBA – vorhandenes Makro flexibler machen
29.07.2020 09:49:57
MRUTOR
Sorry,
da war noch ein kleines Fehlerchen drin:

Sub AKZN_9_11_trennen()
Dim strSp$, intSp%, lngLRow&, intUeb&
Dim rngSel As Range, strSel As String
On Error Resume Next
Set rngSel = Application.InputBox("Bitte erstes Aktenzeichen in der Liste auswaehlen", " _
Auswahl", Type:=8)
If rngSel Is Nothing Then Exit Sub
On Error GoTo 0
strSel = rngSel.Address
intUeb = Range(strSel).Row - 1 'Anzahl Zeilen für Spaltenüberschrift (0 für ohne)
intSp = Range(strSel).Column
lngLRow = Cells(Rows.Count, intSp).End(xlUp).Row
Columns(intSp + 1).Insert                             'Hilfsspalte einfügen
If intUeb > 0 Then _
Cells(intUeb, intSp + 1) = "Endziff." 'Wort Endziff. einfüßgen
For c = intUeb + 1 To lngLRow
Cells(c, intSp + 1) = Right(Cells(c, intSp), 3) 'letzte 3 Stellen
Next
Cells(intUeb + 1, intSp).Select  '1. Aktenzeichen selektieren
End Sub

Anzeige
AW: VBA – vorhandenes Makro flexibler machen
29.07.2020 09:55:45
Erwin
Hallo Torsten,
das funzt ja fast perfekt ;)
Wenn das Aktenzeichen 11.123.456.002 lautet wird in der Spalte mit den Endziffern nur die Ziffer 2 ausgegeben.
Gibt es noch eine Möglichkeit, dass 002 erscheint?
Herzlichen Dank schon mal.
Erwin
AW: VBA – vorhandenes Makro flexibler machen
29.07.2020 10:03:58
MRUTOR
Klar geht das:

Sub AKZN_9_11_trennen()
Dim strSp$, intSp%, lngLRow&, intUeb&
Dim rngSel As Range, strSel As String
On Error Resume Next
Set rngSel = Application.InputBox("Bitte erstes Aktenzeichen in der Liste auswaehlen", " _
Auswahl", Type:=8)
If rngSel Is Nothing Then Exit Sub
On Error GoTo 0
strSel = rngSel.Address
intUeb = Range(strSel).Row - 1 'Anzahl Zeilen für Spaltenüberschrift (0 für ohne)
intSp = Range(strSel).Column
lngLRow = Cells(Rows.Count, intSp).End(xlUp).Row
Columns(intSp + 1).Insert                             'Hilfsspalte einfügen
If intUeb > 0 Then _
Cells(intUeb, intSp + 1) = "Endziff." 'Wort Endziff. einfüßgen
For c = intUeb + 1 To lngLRow
Cells(c, intSp + 1) = Right(Cells(c, intSp), 3) 'letzte 3 Stellen
Cells(c, intSp + 1).NumberFormat = "000"
Next
Cells(intUeb + 1, intSp).Select  '1. Aktenzeichen selektieren
End Sub

Anzeige
Herzlichen Dank
29.07.2020 10:11:20
Erwin
Hallo Torsten,
vielen Dank für deine Ausdauer, jetzt ist das Makro so flexibel, dass ich es überall einsetzen kann.
Grüße - Erwin
Freut mich...
29.07.2020 10:23:51
MRUTOR
...geholfen zu haben.
Gruss

242 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige