Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Worksheet.add in function verwenden

Forumthread: Worksheet.add in function verwenden

Worksheet.add in function verwenden
14.02.2015 21:36:52
Norbert
Hallo,

ich versuche eine Function zu schreiben die ein neues Tabellenblatt
anlegt, darin mit Hilfe des Solvers eine Berechnung durchführt und
dann das Tabellenblatt wieder löscht. Aber das Anlegen von Tabellenblättern
schaffe ich nur in einem sub.
Hier mein Versuch:
Function NeuesBlatt(neuname)
'        ThisWorkbook.Worksheets.Add --> geht nicht
Worksheets(Test_Approx.xlsx).Sheets.Add before:=Sheets(Sheets.Count)
'--> geht auch nicht
ActiveSheet.Name = neuname
End Function

Aufruf der Function aus einer Zelle über =NeuesBlatt(B2)

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet.add in function verwenden
14.02.2015 22:58:15
Luschi
Hallo Norbert,
das wird auch nie so funktionieren.
Der Aufruf einer Vba-Funktion in einer Excelzelle gestattet keine Manipulation anderer Zellen im selben oder anderen Tabellenblättern noch das Anlegen von neuen Excel-Objekten.
Das ist leider ein Fakt, worüber ich mich auch manchmal ärgere. So eine Prozedur/Funktion kann man nur per Button/Formular/Ribbon starten, aber nicht als Tabellenfunktion.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Worksheet.add in function verwenden
15.02.2015 20:15:40
Norbert
Scccccccchhhhhhhhh.....ade.
Auf jeden Fall vielen Dank für die schnelle Antwort.

AW: Worksheet.add in function verwenden
15.02.2015 20:54:54
Mullit
Hallo,
nicht ganz so scccccccchhhhhhhhh.....nell, mit VBA geht das nicht, aber der API-Timer bietet eine Möglichkeit, die Technik hab' ich von Nepumuk, guckt Euch seine Posts an...
Dafür benötigt die Funktion eigentlich auch keinen Namen als Parameter:
Option Explicit

Private Declare Function KillTimer Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal nIDEvent As Long) As Long
Private Declare Function SetTimer Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal nIDEvent As Long, _
    ByVal uElapse As Long, _
    ByVal lpTimerFunc As Long) As Long

Private lblnNoFunc As Boolean

Private Sub prcStartTimer()
    SetTimer Application.hWnd, _
        0&, 100&, AddressOf TimerProc
End Sub

Private Sub prcStopTimer()
    KillTimer Application.hWnd, 0&
End Sub

Private Sub TimerProc(ByVal hWnd As Long, ByVal nIDEvent As Long, _
    ByVal uElapse As Long, ByVal lpTimerFunc As Long)
    On Error Resume Next
    Call prcStopTimer
    Call prcNewSheet
End Sub

Private Sub prcNewSheet()
     Dim wksSheet As Worksheet
     With Worksheets
        Set wksSheet = .Add(Before:=Worksheets(.Count))
     End With
     'hier die Berechnung 
     lblnNoFunc = Not lblnNoFunc
     Application.DisplayAlerts = False
     wksSheet.Delete
     Set wksSheet = Nothing
     Application.DisplayAlerts = True
     lblnNoFunc = Not lblnNoFunc
End Sub

Public Function NeuesBlatt() As String
   If Not lblnNoFunc Then
     NeuesBlatt = ""
     Call prcStartTimer ' so geht's.... 
   End If
End Function


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Gruß, Mullit
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige