Worksheets-Objekt-Zugriff in ActiveWorkb
10.09.2022 08:12:35
Wolfgang
die anhängige Arbeitsmappe scheitert an mehreren VBA-Problemen, die ich nicht beheben kann, weil ein scheinbar einfaches Problem
ich nicht lösen kann, all' das Microsoft Zeug zum Zugriff auf ein Arbeitsblatt in der aktive Arbeitsmappe funktioniert nicht,
ich komme nicht an das Worksheets-Aufzählungs-Objekt heran, weder mit "ActiveWorkbook" noch "ThisWorkbook".
Eigentlich sollte das "Sub Debug_WindRose" eine Funktion, die in einer Zelle aufgerufen werden und eine Zell-Referenz übernehmen,
sowie einen String in die aufrufende Zelle zurückgeben,
eine Function kann man aber nicht debuggen (@Microsoft:Warum eigentlich nicht?)
An den auskommentierten Zeilen sieht man dies und auch,
daß ich auf verschiedenen Wegen versuchen will an mein Arbeitsblatt "WindRose" 'rankommen will, um meinen Rückgabewert auszulesen.
Sub Debug_WindRose()
'09.09.22 10:30
'Function WindRose(RefKurs)
'Function WindRose(RefKurs As Range) As String
'Dieses Makro arbeitet nur korrekt, wenn im Quell-Arbeitsblatt die Winkel in aufsteigender Abfolge eingetragen sind
Const Tbl As String = "WindRose" 'Das geht und hat nix mit meinem Problem zu tun
'Dim RefKurs As Range
'Dim RefKurs As Object
Dim Kurs As Double
Dim ap As Application
Dim wb As Workbook
Dim ws As Worksheet
Dim UR As Range
Dim E As Range
Dim rw As Long
Dim i As Integer
Dim d, r As Double
Dim rtnWindRose As String
On Error GoTo ErrorHandlerApp
'Falls Microsoft's GetObect nicht geht, dann das hier
'Set ap = "Microsoft Excel"
'From
'https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/getobject-function
Set ap = GetObject(, "Excel.Application") 'Mit oder ohne Set beim Durchsteppen Debuggerfehler 91
If Err.Number 0 Then ExcelWasNotRunning = True
Err.Clear ' Clear Err object in case error occurred.
On Error GoTo ErrorHandlerWB
Set wb = ap.ThisWorkbook
On Error GoTo ErrorHandlerWS
Set ws = wb.Worksheets(Tbl)
On Error GoTo ErrorHandlerDefault
UR = ws.UsedRange 'Hier meckert Compiler 91 ObjektVariable nicht definiert, hat nix mit Const Tbl zu tun
Kurs = -0.012114
Kurs = CDbl(Kurs)
rw = UR.Rows.Count 'Damit Do While nicht überläuft
r = 360 'Größter Winkel in der Tabelle = Sinus 0,958915723
On Error GoTo ErrorHandlerLoop
i = 2 'nicht in Header suchen
Do Until i > rw
cv = ws.Range(1, i).Value 'Debugger 1004
d = Kurs - CDbl(cv)
If (d
Ich bastle nun schon einige Wochen an diesem (Microsoft-made) Problem, bitte helft mir.
Vielen Dank!
Gruß Wolfgang