Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1504to1508
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA Typenfehler ._.

Excel VBA Typenfehler ._.
03.08.2016 13:32:48
Ano
Hallo zusammen,
ich schreibe seit heute morgen an einem Makro um aus einer Excel Datei Werte in ein anderes Sheets zu übertragen.
Aktuell bringt er mir einen Typenfehler aus und ich verstehe nicht wieso ._. ...
Ist bestimmt nicht der einzige Fehler ^^.
Gibt es eine Möglichkeit den doppelten Array hochzuzählen?, so damit ich nicht 12x das gleiche schreiben muss.
Wen ich zum Beispiel Cache(1(1)) schreib markt er mit das Rot an.
Vielen Dank und Grüße!
Raksha
:Option Explicit
Const OLAP = "U:\Vertrieb\4. Vertriebsinnendienst\1. Auswertungen + Statistiken\OLAP-Auswertungen\Auftragseingang-OLAP.xlsx"
Const UMSATZ = "U:\Vertrieb\2. Anfragen\07.2_01_00_09_12_Anfrageliste_2016.xlsx"
Dim wbkUmsatz As Workbook
Dim shtUmsatz As Worksheet
Sub Ablauf()
Call OLAPDatei
End Sub

Sub OLAPDatei()
Dim geoeffnet As Boolean
Dim monate("Platzhalter", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", " _
August", "September", "Oktober", "November", "Dezember") As String
Dim sJanuar As String
Dim sFebruar As String
Dim sMaerz As String
Dim sApril As String
Dim sMai As String
Dim sJuni As String
Dim sJuli As String
Dim sAugust As String
Dim sSeptember As String
Dim sOktober As String
Dim sNovember As String
Dim sDezember As String
Dim cache(cJanuar, cFebruar, cMaerz, cApril, cMai, cJuni, cJuli, cAugust, cSeptember,  _
cOktober, cNovember, cSeptember) As Double
Dim cJanuar() As Double
Dim cFebruar() As Double
Dim cMaerz() As Double
Dim cApril() As Double
Dim cMai() As Double
Dim cJuni() As Double
Dim cJuli() As Double
Dim cAugust() As Double
Dim cSeptember() As Double
Dim cOktober() As Double
Dim cNovember() As Double
Dim cSeptember() As Double
Dim k As Double
k = 1
sJanuar = Split(shtUmsatz.Cells(1).Address, "$")(1)
sFebruar = Split(shtUmsatz.Cells(2).Address, "$")(1)
sMaerz = Split(shtUmsatz.Cells(3).Address, "$")(1)
sApril = Split(shtUmsatz.Cells(4).Address, "$")(1)
sMai = Split(shtUmsatz.Cells(5).Address, "$")(1)
sJuni = Split(shtUmsatz.Cells(6).Address, "$")(1)
sJuli = Split(shtUmsatz.Cells(7).Address, "$")(1)
sAugust = Split(shtUmsatz.Cells(8).Address, "$")(1)
sSeptember = Split(shtUmsatz.Cells(9).Address, "$")(1)
sOktober = Split(shtUmsatz.Cells(10).Address, "$")(1)
sNovember = Split(shtUmsatz.Cells(11).Address, "$")(1)
sDezember = Split(shtUmsatz.Cells(12).Address, "$")(1)
If IsWorkbookOpen(OLAP) Then
geoeffnet = True
Else
OpenWorkbook (OLAP)
geoeffnet = True
End If
If geoeffnet = True Then
For i = 1 To 12
cache(0 + k) = ActiveSheet.Cells(13, 2).Value 'Zeilenbeschriftung V
cache(0 + k) = ActiveSheet.Cells(12, 2).Value 'Zeilenbeschriftung T
cache(0 + k) = ActiveSheet.Cells(9, 2).Value  'Zeilenbeschriftung L
k = k + 1
Loop
Workbooks("07.2_01_00_09_12_Anfrageliste_2016.xlsx").Activate
Worksheets(2).Range("G57").Value = cache(1)
Worksheets(2).Range("G58").Value = cache(1)
Worksheets(2).Range("G59").Value = cache(1)
Worksheets(4).Range("G57").Value = cache(2)
Worksheets(4).Range("G58").Value = cache(2)
Worksheets(4).Range("G59").Value = cache(2)
Worksheets(6).Range("G57").Value = cache(3)
Worksheets(6).Range("G58").Value = cache(3)
Worksheets(6).Range("G59").Value = cache(3)
Worksheets(8).Range("G57").Value = cache(4)
Worksheets(8).Range("G58").Value = cache(4)
Worksheets(8).Range("G59").Value = cache(4)
Worksheets(10).Range("G57").Value = cache(5)
Worksheets(10).Range("G58").Value = cache(5)
Worksheets(10).Range("G59").Value = cache(5)
Worksheets(12).Range("G57").Value = cache(6)
Worksheets(12).Range("G58").Value = cache(6)
Worksheets(12).Range("G59").Value = cache(6)
Worksheets(14).Range("G57").Value = cache(7)
Worksheets(14).Range("G58").Value = cache(7)
Worksheets(14).Range("G59").Value = cache(7)
Worksheets(16).Range("G57").Value = cache(8)
Worksheets(16).Range("G58").Value = cache(8)
Worksheets(16).Range("G59").Value = cache(8)
Worksheets(18).Range("G57").Value = cache(9)
Worksheets(18).Range("G58").Value = cache(9)
Worksheets(18).Range("G59").Value = cache(9)
Worksheets(20).Range("G57").Value = cache(10)
Worksheets(20).Range("G58").Value = cache(10)
Worksheets(20).Range("G59").Value = cache(10)
Worksheets(22).Range("G57").Value = cache(11)
Worksheets(22).Range("G58").Value = cache(11)
Worksheets(22).Range("G59").Value = cache(11)
Worksheets(24).Range("G57").Value = cache(12)
Worksheets(24).Range("G58").Value = cache(12)
Worksheets(24).Range("G59").Value = cache(12)
ActiveWorkbook.SaveAs UMSATZ
ActiveWorkbook.Close
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Typenfehler ._.
03.08.2016 15:50:07
Piet
Hallo Heiko
bitte nicht böse sein, da werden einige Ratgeber nur müde gelaechelt haben. Es wimmelt vor Fehler.
Ich bin kein Profi, habe sicher nicht alle Fehler entdeckt. Der Code wird so nicht funktionieren!
Dim monate("Platzhalter", "Januar" --- monate ist ein Array, ıch glaube nicht das es so geht!
Dim cache(cJanuar, cFebruar) As Double --- Double erwartet Zahlenwerte, keinen Text
Dim cJanuar() As Double --- alle Monate werden nochmal separat deklariert? Warum?
Dim cSeptember() As Double --- cSeptember wurde 2mal doppelt deklariert, anstatt: cDecember !!
Ich weiss nicht ob man heute mit Dim die Monate direkt zuweisen kann. Im alten Excel sicher nicht.
Da ging es nur mit Dim das Array deklarieren, und danach das Array mit Werten laden (Zahl, Text)
Dim monate() As String
monate = Array("Januar, ...
Die Split Funktion habe ich auch nicht verstanden? Was soll dort geladen werden und woher?
If IsWorkbookOpen(OLAP) Then -- hier wird das Object OLAP erwartet, es wurde nirgends deklariert!
For i = 1 To 12
k = k + 1
Loop
Nach For muss Next kommen, nicht Loop. Ausserdem wird k bei For immer um 1 erhöht. Hier gleich 2x
Was soll hier aus dem Cache übertragen werden? Wie wurde Cache befüllt, mit welchem Wert?
Worksheets(2).Range("G57").Value = cache(1)
Worksheets(2).Range("G58").Value = cache(1)
Worksheets(2).Range("G59").Value = cache(1)
************************************************************
Wenn man genau wüsste was das Programm machen soll kann man sicher besser Rat geben.
So kann man nur raten und hat bei den Fehlern keinen Durchblick über die gewünschte Funktion.
mfg Piet
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige