ich lese regelmäßig hier im Forum mit und habe heute eine Frage, für die ich in der Recherche keine passende Antwort gefunden habe.
Ich habe ein Problem mit einer Arrayformel, die ich per VBA erzeugen möchte.
Ziel: Ermittlung der letzten verwendeten Spalte in Zeile 23.
Lösungsansatz: Arrayformel aus dem Forum
So soll das Endergebnis aussehen:
{=MAX(('D:\Eigene Dateien\FinanzTools\Programme\ITO\Testordner\New Environment\Tool in Entwicklung\Projekte\[0001_Swissport_NCM_TPL_Desktop Services_270206.xls]Status'!$23:$23"")*SPALTE('D:\Eigene Dateien\FinanzTools\Programme\ITO\Testordner\New Environment\Tool in Entwicklung\Projekte\[0001_Swissport_NCM_TPL_Desktop Services_270206.xls]Status'!$23:$23))}
Das klappt auch, wenn ich die Arrayformel direkt in Excel eingebe.
Folgender Code funktioniert bei mir nicht:
Dateiname ist dabei variabel.
Sub testmakro()
pfad = "D:\Eigene Dateien\FinanzTools\Programme\ITO\Testordner\New Environment\Tool in Entwicklung\Projekte\"
projekt = "0001_Swissport_NCM_TPL_Desktop Services_270206.xls"
Range("E14").Select
Selection.FormulaArray = _
"=MAX(('" & pfad & "[" & projekt & "]Status'!R23<>"""")*COLUMN(" & "'" & pfad & "[" & projekt & "]Status'!R23))"
End Sub
Fehlermeldung:
Laufzeitfehler 1004
Die FormulaArray-Eigenschaft des Range-Objektes kann nicht festgelegt werden.
Muss ich was beachten bei der Erzeugung von Arrayformeln per VBA?
Hängt das mit dem langen Pfad zusammen?
Oder sehe ich den Wald vor lauter Bäumen nicht?
2. Problem:
Ich separiere ein Tabellenblatt in eine separate Arbeitsmappe und lösche anschließend jeglichen Code in der Arbeitsmappe (gefunden hier im Forum):
With ActiveWorkbook.VBProject
For Each vbc In .VBComponents
Select Case vbc.Type
Case 1, 2, 3: .VBComponents.Remove .VBComponents(vbc.Name)
Case 100
With vbc.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
Dieser Code arbeitet bei mir einwandfrei, läuft aber auf einem anderen Rechner nicht und führt zu einem Fehler.
Muß ich irgendwelche Verweise setzen oder was ist die Ursache?
Bin für jeden Hinweis dankbar und sage jetzt schon danke für die Hilfestellung.
Gruß
Volker