GoTo in For-Schleife & If-Abfrage in MsgBox
30.11.2012 17:41:05
Steffi
habe eine Mitarbeiter-Datei in der ich Daten von mehreren Mitarbeitern reinkopieren muss (aus Vergleichszwecken). Die Datenquellen (auch Excel-Dateien und komplett vom Aufbau und den Einträgen identisch außer das in Zelle B7 der Mitarbeitername steht nach dem ich in meinem Code suche und mit dem Feld in meiner Tabelle vergleiche um die Daten in die richtigen Zeilen zu kopieren) sind von den einzelnen Mitarbeitern auszufüllen und nach einer bestimmten Ordnerstruktur abzuspeichern. Die Daten aus den einzelnen Excel-Dateien muss ich öffnen und die Daten kopieren und in meine Datei einfügen. Jetzt habe ich in VBA einen Code geschrieben um mir die Arbeit zu erleichtern.
Zum besseren Verständnis habe ich die Datei hochgeladen (aus datenschutzgründen verändert):
https://www.herber.de/bbs/user/82831.xls
Ich habe in Tabelle1 eine Tabelle angelegt in der ich die Hyperlinks der Dokumente platziere (entsprechend der Mitarbeiter). Durch anklicken eines Update-Buttons kann ich auswählen ob die Daten des jeweiligen Mitarbeiters kopiert und eingefügt werden sollen oder nicht.
Dies geschieht in dem ich über eine For-Schleife die Hyperlinks als meine "ImportDatei" deklariere (siehe Code unten) und prüfe ob in der Spalte C "Ja" steht.
Problem 1:
Sobald ein Fehler auftritt weil ich einen Fehler beim kopieren des Hyperlinks gemacht habe und der Link nicht existiert bricht das Programm ab. Dies habe ich mit dem GoTo-Befehl abfangen wollen der aber nicht zielführend arbeitet sondern immer angezeigt wird.
Ich glaube das hängt mit der For-Schleife zusammen?!
Problem2:
Ich möchte das mir durch eine MsgBox angezeigt wird nachdem die Daten eingefügt wurden, welche eingefügt wurden
Codeabschnitt:
MsgBox "Folgende MA-Daten wurden aktualisiert:" & Chr(13) & "MA1" & Chr(13) & "MA2" & Chr(13) & "MA5"
Hier soll er die Zellen A7:A11 aus Tabelle1 anzeigen wenn in der entsprechenden Spalte C "Ja" steht...
D.h. ich brauche irgendwie eine IF-Abfrage in der MsgBox?
Private Sub CommandButton1_Click()
Dim ImportDatei
Dim wbImport As Workbook
Application.ScreenUpdating = False
For i = 7 To 11
If Worksheets("Tabelle1").Cells(i, 3) = "Ja" Then
ImportDatei = Worksheets("Tabelle1").Cells(i, 2)
On Error GoTo Failure
Set wbImport = Workbooks.Open(ImportDatei)
wbImport.Worksheets("MA-Daten").Range("C1, C3, C5, C7, C9, C11, C13, C15, C17, C19, C21, _
C23").Copy
If wbImport.Sheets("MA-Daten").Range("B7").Value = "MA1" Then
ThisWorkbook.Sheets("MA-Daten").Range("E17").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA2" Then
ThisWorkbook.Sheets("MA-Daten").Range("E29").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA3" Then
ThisWorkbook.Sheets("MA-Daten").Range("E41").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA4" Then
ThisWorkbook.Sheets("MA-Daten").Range("E53").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA5" Then
ThisWorkbook.Sheets("MA-Daten").Range("E65").PasteSpecial Paste:=xlValues
End If
wbImport.Worksheets("MA-Daten").Range("H2, K2, N2, Q2, T2, W2, Z2, AC2, AF2, AI2, AL2, AO2, _
_
AR2, AU2, AX2, BA2, BD2, BG2, BJ2, BM2, BP2, BS2, BV2, BY2, CB2, CE2, CH2, CK2, CN2, CQ2, CT2, _
CW2, CZ2, DC2, DF2, DI2, DL2, DO2").Copy
If wbImport.Sheets("MA-Daten").Range("B7").Value = "MA1" Then
ThisWorkbook.Sheets("MA-Daten").Range("G17").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA2" Then
ThisWorkbook.Sheets("MA-Daten").Range("G29").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA3" Then
ThisWorkbook.Sheets("MA-Daten").Range("G41").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA4" Then
ThisWorkbook.Sheets("MA-Daten").Range("G53").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA5" Then
ThisWorkbook.Sheets("MA-Daten").Range("G65").PasteSpecial Paste:=xlValues
End If
wbImport.Worksheets("MA-Daten").Range("H3, K3, N3, Q3, T3, W3, Z3, AC3, AF3, AI3, AL3, AO3, _
_
AR3, AU3, AX3, BA3, BD3, BG3, BJ3, BM3, BP3, BS3, BV3, BY3, CB3, CE3, CH3, CK3, CN3, CQ3, CT3, _
CW3, CZ3, DC3, DF3, DI3, DL3, DO3").Copy
If wbImport.Sheets("MA-Daten").Range("B7").Value = "MA1" Then
ThisWorkbook.Sheets("MA-Daten").Range("G78").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA2" Then
ThisWorkbook.Sheets("MA-Daten").Range("G90").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA3" Then
ThisWorkbook.Sheets("MA-Daten").Range("G102").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA4" Then
ThisWorkbook.Sheets("MA-Daten").Range("G114").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA5" Then
ThisWorkbook.Sheets("MA-Daten").Range("G126").PasteSpecial Paste:=xlValues
End If
wbImport.Worksheets("MA-Daten").Range("H5, K5, N5, Q5, T5, W5, Z5, AC5, AF5, AI5, AL5, AO5, _
_
AR5, AU5, AX5, BA5, BD5, BG5, BJ5, BM5, BP5, BS5, BV5, BY5, CB5, CE5, CH5, CK5, CN5, CQ5, CT5, _
CW5, CZ5, DC5, DF5, DI5, DL5, DO5").Copy
If wbImport.Sheets("MA-Daten").Range("B7").Value = "MA1" Then
ThisWorkbook.Sheets("MA-Daten").Range("G18").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA2" Then
ThisWorkbook.Sheets("MA-Daten").Range("G30").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA3" Then
ThisWorkbook.Sheets("MA-Daten").Range("G42").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA4" Then
ThisWorkbook.Sheets("MA-Daten").Range("G54").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA5" Then
ThisWorkbook.Sheets("MA-Daten").Range("G66").PasteSpecial Paste:=xlValues
End If
wbImport.Worksheets("MA-Daten").Range("H6, K6, N6, Q6, T6, W6, Z6, AC6, AF6, AI6, AL6, AO6, _
_
AR6, AU6, AX6, BA6, BD6, BG6, BJ6, BM6, BP6, BS6, BV6, BY6, CB6, CE6, CH6, CK6, CN6, CQ6, CT6, _
CW6, CZ6, DC6, DF6, DI6, DL6, DO6").Copy
If wbImport.Sheets("MA-Daten").Range("B7").Value = "MA1" Then
ThisWorkbook.Sheets("MA-Daten").Range("G79").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA2" Then
ThisWorkbook.Sheets("MA-Daten").Range("G91").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA3" Then
ThisWorkbook.Sheets("MA-Daten").Range("G103").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA4" Then
ThisWorkbook.Sheets("MA-Daten").Range("G115").PasteSpecial Paste:=xlValues
ElseIf wbImport.Sheets("MA-Daten").Range("B7").Value = "MA5" Then
ThisWorkbook.Sheets("MA-Daten").Range("G127").PasteSpecial Paste:=xlValues
End If
Application.CutCopyMode = False
wbImport.Close savechanges:=False
Set wbImport = Nothing
End If
Next i
MsgBox "Folgende MA-Daten wurden aktualisiert:" & Chr(13) & "MA1" & Chr(13) & "MA2" & Chr( _
_
13) & "MA5"
Range("C1").Select
Application.ScreenUpdating = True
Failure:
MsgBox "Achtung! Der Pfad in der angeklickten Zelle konnte nicht gefunden werden! " & Chr( _
_
13) & Chr(13) & "Bitte überprüfen Sie den Pfad!"
ThisWorkbook.Worksheets("Tabelle1").Activate
Worksheets("Tabelle1").Cells(i, 2).Select
End Sub
Ich hoffe es ist halbwegs nachvollziehbar :).
Ich DANKE euch schon im Voraus für Eure Mithilfe!!!
Liebe Grüße
Steffi