02.07.2018, 09:24
Hallo zusammen,
in meiner Arbeitsmappe lese ich zu Beginn meine Daten vüber einen Button aus zwei verschiedenen Excel-Dateien ein. Dabei möchte ich, dass der Benutzer danach in zwei Bereichen nur Daten durch ein Drop-Down Menü auswählen kann.
Der relevante Teil meiner Arbeitsmappe habe ich dem Anhang beigefügt.
Dabei geht es zum einen um die Spalte P (ERA EG), welche nur Zahlen im Bereich von 1-17 annehmen soll und um den Bereich der Spalten T bis Y, welche mit A bis E bewertete werden können.
Meine Einlesemakro sieht so aus:
Ich habe bereits versucht mit dem Makrorekorder die Bereiche zu formatieren, jedoch erhalte ich einen Fehler (Fehler beim Kompilieren: Variable oder Prozedur anstelle eines Moduls erwartet) , wenn ich das Makro beim Einlesen aufrufe. Führe ich das Einlesen und das Makro für die DropDown-Liste seperat aus, funktioniert alles. Jedoch möchte ich es gerne in einem Schritt machen.
Bin über jegliche Hilfe dankbar :)
in meiner Arbeitsmappe lese ich zu Beginn meine Daten vüber einen Button aus zwei verschiedenen Excel-Dateien ein. Dabei möchte ich, dass der Benutzer danach in zwei Bereichen nur Daten durch ein Drop-Down Menü auswählen kann.
Der relevante Teil meiner Arbeitsmappe habe ich dem Anhang beigefügt.
Dabei geht es zum einen um die Spalte P (ERA EG), welche nur Zahlen im Bereich von 1-17 annehmen soll und um den Bereich der Spalten T bis Y, welche mit A bis E bewertete werden können.
Meine Einlesemakro sieht so aus:
Code:
Sub DatenEinlesenColorado()
On Error Resume Next
Application.EnableEvents = False
'Einlesen der Daten für die Spalten A bis M, sowie die Spalte AG
Call DropDown
Call Readpersnr
Call Nameconvert
Call ReadEintritt
Call ReadDST
Call Readgeb
Call AlterEinlesen
Call DienstjahrFormelEinlesen
'Einlesen und gleichzeitiges kopieren der "Zukünftigen Daten" und der "Aktuellen Daten". Zudem werden Berechnungen angestoßen um Spaltenwerte zu ermitteln
Call ReadEG
Call ReadIRWAZSTD
Call Convertabcde
Call ReadLBUSZ
Call EGGehalt
Call platzhalter
Call LBProzentEinlesen
Call LBEinlesen
Call MEKhEinlesen
Call irwazEinlesen
Call JEK
Call DeltaMEK35berechnen
Call DeltaMEKIrwazberechnen
Call DeltaMEKProzent
Application.EnableEvents = True
On Error GoTo 0
'Einlesen der Daten aus der Vorjahrestabelle
Dim instring1 As String
Dim instring2 As String
Dim instring3 As String
Dim instring4 As String
Dim instring5 As String
Dim instring6 As String
Dim outstring() As String
Dim book, mybook As Workbook
Dim sourceline, destinationline As Integer
Dim Pfad As String
Dim location As String
Dim Identification As Long
Dim Help As Range
Set mybook = ActiveWorkbook
Pfad = (mybook.Worksheets("Parameter").Cells(2, 1))
Set book = Workbooks.Open(Filename:=Pfad, ReadOnly:=True)
sourceline = 3
destinationline = 3
Set Help = mybook.Worksheets("Gehaltsdaten").Range("A3:A3000")
On Error GoTo Fehler
While (destinationline < 1000)
'Nimmt die Personalnummer aus der Lasche "Mitarbeiterdaten" und ordnet die entsprechenden Daten anschliesen der richtigen Nummer in der Gehaltstabelle zu
With book.Worksheets("Gehaltsdaten")
Identification = .Cells(destinationline, 1)
instring1 = .Cells(destinationline, 9) 'Spalte I
instring2 = .Cells(destinationline, 10) 'Spalte J
instring3 = .Cells(destinationline, 11) 'Spalte K
instring4 = .Cells(destinationline, 12) 'Spalte L
instring5 = .Cells(destinationline, 13) 'Spalte M
instring6 = .Cells(destinationline, 33) 'Spalte AG
End With
location = WorksheetFunction.Match(Identification, Help, 0)
location = location + 2
With mybook.Worksheets("Gehaltsdaten")
.Cells(location, 9) = instring1
.Cells(location, 10) = instring2
.Cells(location, 11) = instring3
.Cells(location, 12) = instring4
.Cells(location, 13) = instring5
.Cells(location, 33) = instring6
End With
Sprung:
destinationline = destinationline + 1
sourceline = sourceline + 1
Wend
MsgBox "Die Daten wurden eingelesen!", vbInformation
book.Close savechanges:=False
Exit Sub
Fehler:
Resume Sprung
End Sub
Ich habe bereits versucht mit dem Makrorekorder die Bereiche zu formatieren, jedoch erhalte ich einen Fehler (Fehler beim Kompilieren: Variable oder Prozedur anstelle eines Moduls erwartet) , wenn ich das Makro beim Einlesen aufrufe. Führe ich das Einlesen und das Makro für die DropDown-Liste seperat aus, funktioniert alles. Jedoch möchte ich es gerne in einem Schritt machen.
Code:
Sub DropDown()
Range("P3:P1000").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 15
Range("T3:Y1000").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="A,B,C,D,E"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Bin über jegliche Hilfe dankbar :)