MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 13.02.2018, 14:57   #1
Ausgeheckt
Neuer Benutzer
Neuer Benutzer
Standard Excel 2013 - Maßnahmenliste mit Signatur und E-Mail-Versand

Hallo zusammen,

ich habe folgende Aufgabe mir selber gestellt und scheitere an der Umsetzung. Aufgrund zahlreiche Fehlschläge habe ich beschlossen ein Ablaufdiagramm zu entwerfen, welches den umzusetzenden VBA-Code bzw. dessen Funktion beschreibt. (siehe EXCEL-File).

Die Liste soll im groben erklärt folgendes machen:

Die Liste liegt an einem Zentralen Ablageort und kann und soll von mehreren Bearbeitern bearbeitet werden können (Maßnahmen).

Ein Mitarbeiter erfasst alle Mängel und ordnet diese den jeweiligen Bearbeiter zu.

die Mitarbeiter tragen nach erfolgter Umsetzung die Maßnahmen ein.

Nach erfolgter Eintragung der Maßnahme, soll eine Signatur (Windows User und Systemzeitstempel) hinter der eingefügten Maßnahme hinterlegt werden.

Im Anschluss soll eine E-Mail generiert und gesendet werden.

Die Tabelle soll NICHT als Anlage bzw. Anhang versendet werden, sondern im E-Mail Body eingefügt werden.

Der Betreff der E-Mail setzt sich folgendermaßen zusammen:
Inhalt C1 (Titel) & Inhalt C2 (Gegenstand) &"Maßnahme zum Mangel Nr.: ('Inhalt Spalte A und Zeile aus Speicher')


Ich habe bereits die Liste in einer E-Mail versenden können, ebenso kann ich den Zeit und User -Stempel setzen, jedoch nur wenn ich dem Button gezielt mit einer Zelle verknüpfe. Ich möchte nun nicht für jede Zeile einen Button haben, diese dynamische Zuweisung der zu signierenden Maßnahme gelinkt mir nicht. Ich denke, ich habe es schlüssig und nachvollziehbar im Ablaufdiagramm dargestellt.

Anpassungen im VBA gelingen mir aber bei komplexen Neuentwicklungen gelingt es mir nicht das Ablaufdiagramm in VBA-Code zu übersetzen.

SW: EXCEL 2013

Ich bin über jeden Tipp und Unterstützung dankbar.
Angehängte Dateien
Dateityp: xlsm Test 01.xlsm (26,8 KB, 0x aufgerufen)
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.02.2018, 08:02   #2
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard freie Spalte finden, signieren und E-Mail senden klappt ABER:

Hallo zusammen,

ich habe es erst mal hinbekommen, dass ich meine gewünschte Maßnahme signieren und eine E-Mail senden kann.

Ich brauch Unterstützung für folgendes Problem:

Wenn ich mehrere Maßnahmen (Auto. Vorgabe) nacheinander signiere wird im Betreff nur die letzte signierte Maßnahme erfasst und das "gesendet" in der Spalte Mail nur für die letzte signierte Maßnahme gesetzt.

Wie kann ich eine Art Register bauen welchen ggf. (nicht zwingend [bei nur einer signierten Maßnahme]) gefüllt wird? D.h. wenn eine Maßnahme signiert wurde und noch keine E-Mail gesendet wurde (Bevor Abgebrochen wird) merke dir diese Maßnahme (Lfd Nr.) und bei jeder weiteren mache das gleiche bis die Mail gesendet wurde, dann gib alle Lfd. Nr. im Betreff aus und setzte hinter der Maßnahme "gesendet". Sollte das signieren bzw. das E-Mail versenden zu den gespeicherten Maßnehmen nicht durchgeführt werden, dann lösche das Register-da keine Mail versendet wurde.

Vielen Dank für Tipps und Hilfestellungen!
Angehängte Dateien
Dateityp: xlsm Test 01 180219 1.xlsm (50,9 KB, 0x aufgerufen)
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.02.2018, 09:33   #3
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hier müsste es wahrscheinlich rein:
...
... also mein Ansatz dessen Syntax wahrscheinlich quatsch ist:
If i = "" Then
i(1) = lfdnr
a = 1
MsgBox ("Schleifennr.:" & a & "Maßnahmenennr.: " & i(1))
Else
(siehe im >Code)
...

Code:

If DateAdd.Value = "" Then
                        'Abfrage, ob genau diese Maßnahme signert werden möchte
                            
                        If MsgBox("Wollen Sie die Maßnahme für den Mangel Nr.: " & Range("A" & newMaßAddress(2)) & " wirklich signieren?", vbYesNo, "Bestätigung") = vbYes Then
                            ActiveSheet.Unprotect
                            lfdnr = Range("A" & newMaßAddress(2)).Value
                            Set ******** = Range("G" & newMaßAddress(2))
                            'MsgBox ("Lfd Nr.:" & lfdnr)
                            'schreiben zeitstempel
                            DateAdd.Value = DateTime.Now
                            'schreiben Windows User in Zelle
                            SignAdd.Value = VBA.Environ("Username")
                            MerkerMailAuto = True   'Merker das bereits ein Maßnahme signiert wurde und wenn eine weitere signiert werden möchte,
                                                    'aber beim durch lauf festgestellt wird, dass keine mehr zum signieren existiert wird die Mailabfrag generiert
                                                            
                            If MsgBox("Wollen Sie eine weitere Maßnahme signieren?", vbYesNo, "Weitere Maßnahme") = vbYes Then
                            '   wieter mit der nächsten unsignierten Maßnahme
                                
                                If i = "" Then
                                    i(1) = lfdnr
                                    a = 1
                                    MsgBox ("Schleifennr.:" & a & "Maßnahmenennr.: " & i(1))
                                Else
                                    a = a + 1
                                    If i(a) = "" Then
                                        i(a) = lfdnr
                                        MsgBox ("Schleifennr.:" & a & "Maßnahmenennr.: " & i(a))
                                    Else
                                        a = a + 1
                                        i(a) = lfdnr
                                        MsgBox ("Schleifennr.:" & a & "Maßnahmenennr.: " & i(a))
                                    End If
                                End If
                                
                            Else
                                'MsgBox "es geht weiter mit E-Mail versand aus dem Automatischen Teil"
                                ********.Value = "senden abgebrochen"
                                Call Send_OriginalRange_from_Excel(lfdnr, openNr, ********)
                                ActiveSheet.Protect
                                Exit Sub
                            End If
                                
                        Else
Aber wie???

Geändert von Ausgeheckt (19.02.2018 um 09:47 Uhr).
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.02.2018, 15:05   #4
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Schieberegister und Array zusammenfügen funktioniert noch nicht ->FIFO

So geht es auch nicht,

kann mir jemand sagen wie ich Hilfe bekomme, bin ich im falschen Forumbereich?

Im Folgendem habe ich einen uneleganten Speicher gebaut (es könnten noch viel mehr Maßnahmen sein als die 6 Stück), aber somit habe ich den Speicher, jetzt müsste ich noch diesen auswerten!
So: Alle Array-Element die einen Inhalt haben sollen verknüpft werden damit ich dese weiterverarbeiten kann --> im E-Mail Betreff einfügen kann ...


Code:

If MsgBox("Wollen Sie eine weitere Maßnahme signieren?", vbYesNo, "Weitere Maßnahme") = vbYes Then
                            '   wieter mit der nächsten unsignierten Maßnahme
                                MerkerMaßnahmen = lfdnr
                                'MsgBox ("Maßnahme Nr.: " & MerkerMaßnahmen)
                                Select Case MerkerMaßnahmen
                                    Case 1: Maßnahme(1) = lfdnr
                                    Case 2: Maßnahme(2) = lfdnr
                                    Case 3: Maßnahme(3) = lfdnr
                                    Case 4: Maßnahme(4) = lfdnr
                                    Case 5: Maßnahme(5) = lfdnr
                                    Case 6: Maßnahme(6) = lfdnr
                                End Select
                                 MsgBox ("Maßn.-Speicher0: " & Maßnahme(1) & (Chr(13)) & "Maßn.-Speicher1: " & Maßnahme(2) & (Chr(13)) & "Maßn.-Speicher2: " & Maßnahme(3) & (Chr(13)) & "Maßn.-Speicher3: " & Maßnahme(4) & (Chr(13)) & "Maßn.-Speicher4: " & Maßnahme(5) & (Chr(13)) & "Maßn.-Speicher5: " & Maßnahme(6))
                                If Maßnahme(1) = "*" Then       'Maßnahme 1 wurde nicht signiert
                                    MsgBox (Maßnahme(1))
                                Else
                                    If Maßnahme(2) = "*" Then   'Maßnahme 2 nicht wurde signiert und nicht 1
                                        MsgBox (Maßnahme(2))
                                     Else
                                        If Maßnahme(3) = "*" Then   'Maßnahme 3 wurde nicht signiert, nicht 1 & 2
                                            MsgBox (Maßnahme(3))
                                        Else
                                            If Maßnahme(4) = "*" Then   'Maßnahme 4 wurde nicht signiert, nicht 1&2&3
                                                MsgBox (Maßnahme(4))
                                            Else
                                                If Maßnahme(5) = "*" Then   'Maßnahme 5 wurde nicht signiert, nicht 1&2&3&4
                                                    MsgBox (Maßnahme(5))
                                                Else
                                                    If Maßnahme(6) = "*" Then   'Maßnahme 6 wurde signiert, nicht 1&2&3&4&5
                                                    MsgBox (Maßnahme(6))
                                                    End If
                                                End If
                                            End If
                                        End If
                                    End If
                                End If
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.02.2018, 11:19   #5
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard String Anfangs oder Letes Zeichen entfernen Wenn ...

Hallo zusammen, ich hoffe es liest jemand und kann mir dazu helfen?

Ein Teil aus meiner Liste und den zuvor geposteten Fragen:

Wie kann ich dem String das erste und/oder das letzte Zeichen entfernen wenn es ein ";" ist. siehe folgend:

Die Auflistung der Zahlen kann länger oder kürzer sein und auch nicht zwingend chronologisch.

Code:

	Ist	Soll	VBA IST
A	1;2;3;	1;2;3	
B	;2;3;4	2;3;4	3;4
C	;2;3;4;	2;3;4	;2;3;4;
D	1;	1	1;
E	;2	2	;2
Code:

Option Explicit

Private Sub CommandButton1_Click()
Dim strA, strB, strC, strD, strE As String

strA = Range("B3")
strB = Range("B4")
strC = Range("B5")
strD = Range("B6")
strE = Range("B7")


'MsgBox ("A: " & strA & (Chr(13)) & "B: " & strB & (Chr(13)) & "C: " & strC & (Chr(13)) & "D: " & strD & (Chr(13)) & "E: " & strE & (Chr(13)))

'nun geht es los mit SOLL Anpassung?!

strA = Mid(strA, Len(strA) - InStr(StrReverse(strA), ";") + 2)
strB = Mid(strB, InStrRev(strB, ";") - 1)





Range("D3") = strA
Range("D4") = strB
Range("D5") = strC
Range("D6") = strD
Range("D7") = strE


End Sub
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.02.2018, 13:51   #6
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

So, den String zurecht schneiden habe ich gelöst.
Außer F, :-(

Code:

	Ist	Soll	VBA IST	
A	1;2;	1;2;3	1;2	Funktioniert
B	;2;3;4	2;3;4	2;3;4	
C	;2;3;4;	2;3;4	2;3;4;	
D	3;	3	3	
E	;2	2	2	
F	1;2;;4;;;6;	1;2;4;6		Funktioniert
Code:

'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
'strA = Mid(strA, Len(strA) - InStr(StrReverse(strA), ";") + 2)
If Left(strA, 1) = ";" And Right(strA, 1) = ";" Then
    strA = Mid(strA, InStr(strA, ";") + 1)
    strA = Left(strA, Len(strA) - 1)
Else
    If Left(strA, 1) = ";" Then strA = Mid(strA, InStr(strA, ";") + 1)
    If Right(strA, 1) = ";" Then strA = Left(strA, Len(strA) - 1)
End If

'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
strB = Mid(strB, InStrRev(strB, ";") - 3)

'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
If Left(strC, 1) = ";" Then strC = Mid(strC, 2)

'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
If Right(strD, 1) = ";" Then
strD = Left(strD, Len(strD) - 1)
'strD = Mid(strD, InStrRev(strD, ";") - (Len(strD) + 1))
Else
strD = strD
End If

'EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
If Left(strE, 1) = ";" Then
strE = Mid(strE, InStr(strE, ";") + 1)
Else
strE = strE
End If


'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
strF = Replace(strF, ";;;;", ";")
strF = Replace(strF, ";;;", ";")
strF = Replace(strF, ";;", ";")

If Left(strF, 1) = ";" And Right(strF, 1) = ";" Then
    strF = Mid(strF, InStr(strF, ";") + 1)
    strF = Left(strF, Len(strF) - 1)
Else
    If Left(strF, 1) = ";" Then strF = Mid(strF, InStr(strF, ";") + 1)
    If Right(strF, 1) = ";" Then strF = Left(strF, Len(strF) - 1)
End If
strF = Replace(strF, ";;", "")
'####################################################################

Geändert von Ausgeheckt (20.02.2018 um 14:00 Uhr).
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.02.2018, 07:21   #7
Ausgeheckt
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard String teilen in Range via Schleife

Hallo zusammen,

ich hoffe das es jemand ließt und mir einen Tipp geben kann!

wie kann ich nun den String nutzen um mit dessen Inhalt (Zeilennr.) Zellen zu adressieren?

Der String kann unterschiedlich viele Zeilennr. beinhalten von 1-46 (da ich max. 46 in meinem "Case-Speicher" dem Array und später dem Strin zuweise.

Im Folgenden ein Beispiel zum testen: (Am Beispiel String "A")

Ich scheitere an der systematischen Zerteilung des Strings (ich denke mittels Schleife)

Code:

A		B		C		Str
13&14&15&16		13		13&		IST (im String)
13 hier		13 hier		13 hier		SOLL(VBA selbst addressieren)
14 hier						SOLL(VBA selbst addressieren)
15 hier						SOLL(VBA selbst addressieren)
16 hier						SOLL(VBA selbst addressieren)
Code:

Private Sub CommandButton2_Click()
Dim AstrAdd As String
Dim BstrAdd As String
Dim CstrAdd As String
Dim i As Integer

Dim newAstrAdd As String

AstrAdd = Range("B12")
BstrAdd = Range("C12")
CstrAdd = Range("D12")



For Cnt = 1 To 2 Step 1
    AstrAdd = Replace(AstrAdd, "&&&&", "&")
    AstrAdd = Replace(AstrAdd, "&&&", "&")
    AstrAdd = Replace(AstrAdd, "&&", "&")
    'MsgBox (str)
    If Left(AstrAdd, 1) = "&" And Right(AstrAdd, 1) = "&" Then
        AstrAdd = Mid(AstrAdd, InStr(AstrAdd, "&") + 1)
        AstrAdd = Left(sAtrAdd, Len(AstrAdd) - 1)
    Else
        If Left(AstrAdd, 1) = "&" Then AstrAdd = Mid(AstrAdd, InStr(AstrAdd, "&") + 1)
        If Right(AstrAdd, 1) = "&" Then AstrAdd = Left(AstrAdd, Len(AstrAdd) - 1)
    End If
    'MsgBox (str)
    AstrAdd = Replace(AstrAdd, "&&", "") ' finale String den ein Teil des Betreffs ist
                                    
Next Cnt
MsgBox (AstrAdd)
 
 
 For i = Left(AstrAdd, InStr(AstrAdd, "&") - 1) To 25
 newAstrAdd = Left(AstrAdd, InStr(AstrAdd, "&") - 1)
 Range("C" & newAstrAdd) = newAstrAdd & " hier"
 Next i

Range("B18") = newAstrAdd
Range("C18") = newAstrAdd & " hier"
Range("D18") = AstrAdd
                            
                            
End Sub

Geändert von Ausgeheckt (21.02.2018 um 07:25 Uhr).
Ausgeheckt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.