09.04.2020, 23:40
Hallo Zusammen,
Mühsam ernährt sich das Eichhörnchen. Nachdem ich schon einigen Support hier im Forum erhalten habe, stehe ich mal wieder wie der Esel am Berg.
Mr. Google zeigte mir viele Beispiele, aber keines, welches ich erfolgreich adaptieren konnte.
Aus einer Liste erstelle ich automatisch Tabellenblätter, was Dank Hilfe von "Frogger1986" auch wunderbar klappt.
Zusätzlich wird der Tabellenblattnamen in einer Liste nachgeführt, was auch funktioniert, wenn auch eher schlecht umgesetzt von mir, siehe unten in grün.
Leider kriege ich es aber nicht hin, in dieser Liste den Hyperlink auf das Tabellenblatt zu legen.
Irgend jemand eine Idee wie der korrekte Syntax ist für die beiden Zeilen unten in rot?
Zum Testen das xls im Anhang.
Bin für jeden Tipp dankbar.
Grüsse Pean
Sub Kundenliste()
'
Dim i As Integer
Dim Last As Long
Dim sheet As Worksheet
Last = ThisWorkbook.Sheets("Liste").Cells(Rows.Count, 1).End(xlUp).Row 'Letzte benutzte Zeile im Bereich
On Error GoTo ErrExit
GetMoreSpeed
For i = 4 To Last
If ThisWorkbook.Sheets("Liste").Cells(i, 2).Value = Worksheets("Liste").Cells(1, 2).Value And (ThisWorkbook.Sheets("Liste").Cells(i, 3).Value > 0 Or ThisWorkbook.Sheets("Liste").Cells(i, 4).Value > 0) Then
SH = False
For Each sheet In ThisWorkbook.Sheets
If sheet.Name = ThisWorkbook.Sheets("Liste").Cells(i, 1).Value Then
SH = True
Exit For
End If
Next
If SH = False Then
ThisWorkbook.Sheets("Muster").Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
With ThisWorkbook.Worksheets(Sheets.Count)
.Name = ThisWorkbook.Sheets("Liste").Cells(i, 1).Value
.Cells(2, 1) = ThisWorkbook.Sheets("Liste").Cells(i, 1).Value
.Cells(1, 2).Value = ThisWorkbook.Sheets("Liste").Cells(i, 2).Value
End With
Sheets("Kundenliste").Select
Range("A8").Select
Selection.End(xlDown).Select
ActiveCell.Cells(2, 1).Select
ActiveCell.Value = ThisWorkbook.Sheets("Liste").Cells(i, 1).Value
' ActiveCell.Value = Kundennummer'
' ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & Kundennummer & "'!A1", TextToDisplay:=Kundennummer '
End If
End If
Next
ErrExit:
GetMoreSpeed 0
End Sub
Sub GetMoreSpeed(Optional ByVal Modus As Integer = 1)
Static lngCalc As Long
With Application
If Modus = 1 Then
lngCalc = .Calculation
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = -4135
' .Cursor = xlWait
Else
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = IIf(lngCalc <> 0, lngCalc, -4105)
' .Cursor = xlDefault
End If
End With
End Sub
Mühsam ernährt sich das Eichhörnchen. Nachdem ich schon einigen Support hier im Forum erhalten habe, stehe ich mal wieder wie der Esel am Berg.
Mr. Google zeigte mir viele Beispiele, aber keines, welches ich erfolgreich adaptieren konnte.
Aus einer Liste erstelle ich automatisch Tabellenblätter, was Dank Hilfe von "Frogger1986" auch wunderbar klappt.
Zusätzlich wird der Tabellenblattnamen in einer Liste nachgeführt, was auch funktioniert, wenn auch eher schlecht umgesetzt von mir, siehe unten in grün.
Leider kriege ich es aber nicht hin, in dieser Liste den Hyperlink auf das Tabellenblatt zu legen.
Irgend jemand eine Idee wie der korrekte Syntax ist für die beiden Zeilen unten in rot?
Zum Testen das xls im Anhang.
Bin für jeden Tipp dankbar.
Grüsse Pean
Sub Kundenliste()
'
Dim i As Integer
Dim Last As Long
Dim sheet As Worksheet
Last = ThisWorkbook.Sheets("Liste").Cells(Rows.Count, 1).End(xlUp).Row 'Letzte benutzte Zeile im Bereich
On Error GoTo ErrExit
GetMoreSpeed
For i = 4 To Last
If ThisWorkbook.Sheets("Liste").Cells(i, 2).Value = Worksheets("Liste").Cells(1, 2).Value And (ThisWorkbook.Sheets("Liste").Cells(i, 3).Value > 0 Or ThisWorkbook.Sheets("Liste").Cells(i, 4).Value > 0) Then
SH = False
For Each sheet In ThisWorkbook.Sheets
If sheet.Name = ThisWorkbook.Sheets("Liste").Cells(i, 1).Value Then
SH = True
Exit For
End If
Next
If SH = False Then
ThisWorkbook.Sheets("Muster").Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
With ThisWorkbook.Worksheets(Sheets.Count)
.Name = ThisWorkbook.Sheets("Liste").Cells(i, 1).Value
.Cells(2, 1) = ThisWorkbook.Sheets("Liste").Cells(i, 1).Value
.Cells(1, 2).Value = ThisWorkbook.Sheets("Liste").Cells(i, 2).Value
End With
Sheets("Kundenliste").Select
Range("A8").Select
Selection.End(xlDown).Select
ActiveCell.Cells(2, 1).Select
ActiveCell.Value = ThisWorkbook.Sheets("Liste").Cells(i, 1).Value
' ActiveCell.Value = Kundennummer'
' ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & Kundennummer & "'!A1", TextToDisplay:=Kundennummer '
End If
End If
Next
ErrExit:
GetMoreSpeed 0
End Sub
Sub GetMoreSpeed(Optional ByVal Modus As Integer = 1)
Static lngCalc As Long
With Application
If Modus = 1 Then
lngCalc = .Calculation
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = -4135
' .Cursor = xlWait
Else
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = IIf(lngCalc <> 0, lngCalc, -4105)
' .Cursor = xlDefault
End If
End With
End Sub