Microsoft Excel

Herbers Excel/VBA-Archiv

Anwendungs oder objektorientierter Fehler :(

Betrifft: Anwendungs oder objektorientierter Fehler :( von: ChrisNa
Geschrieben am: 20.08.2004 17:47:00

Hallo liebes xl-forum!

Ich bekomme einen Anwendungs oder objektorientierten Fehler bei meinen folgenden code.


<pre>
Private Sub skp()

'Variablen
Dim Jahreingabe As Integer
Dim zähler As Long
Dim kw As Integer

Jahreseingabe = 2004

ThisWorkbook.Worksheets(2).Cells.Delete
ThisWorkbook.Worksheets(2).Cells(1, 2).FormulaR1C1 = "=DATE(" & Jahreseingabe & ",1,1)"

zähler = 2
kw = 1
While Jahreseingabe + 1 > Year(ThisWorkbook.Worksheets(2).Cells(zähler - 1, 2).Value)

ThisWorkbook.Worksheets(2).Cells(zähler, 2).FormulaR1C1 = "=SUM(R[-1]C+1)"
If Weekday(ThisWorkbook.Worksheets(2).Cells(zähler, 2).Value) = 2 Then
If zähler > 9 Then

ThisWorkbook.Worksheets(2).Range(Cells(zähler, 1), Cells(zähler - 7, 1)).Select
With ThisWorkbook.Worksheets(2).Range(Cells(zähler, 1), Cells(zähler - 7, 1)).Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 90
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
ThisWorkbook.Worksheets(2).Range(Cells(zähler, 1), Cells(zähler - 7, 1)).Select
Selection.FormulaR1C1 = "KW " & kw & ""
With ActiveCell.Characters(Start:=1, Length:=4).Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
kw = kw + 1
End If

If zähler < 9 Then


#####################in dieser zeile bekomme ich den a oder o Fehler!###
ThisWorkbook.Worksheets(2).Range("A" & zähler - zähler & ":A" & zähler - 1 & "").Select
######################################

With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 90
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
ThisWorkbook.Worksheets(2).Range(Cells(zähler - zähler + 2, 1), Cells(zähler - zähler + 2, 1)).Select
Selection.FormulaR1C1 = "KW " & kw & ""
With ActiveCell.Characters(Start:=1, Length:=4).Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
kw = kw + 1
End If
End If

If Day(ThisWorkbook.Worksheets(2).Cells(zähler, 2).Value) = 2 Then
If zähler > 3 Then
ThisWorkbook.Worksheets(2).Cells(zähler - 1, 2).Select
'Selection.Insert Shift:=xlDown
Selection.AddItem = xlDown
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
End With
zähler = zähler + 1
End If
End If
zähler = zähler + 1
Wend

ThisWorkbook.Worksheets(2).Cells(zähler - 1, 2).Delete
ThisWorkbook.Worksheets(2).Cells(zähler - 1, 2).Select
Selection.Insert Shift:=xlDown
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
End With

With ThisWorkbook.Worksheets(2).Columns(2)
.NumberFormat = "ddd dd/mm/yyyy"
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.AutoFit
End With

ThisWorkbook.Worksheets(2).Columns(2).Copy
With ThisWorkbook.Worksheets(2).Columns(2)
.PasteSpecial Paste:=xlValues ' Werte
.PasteSpecial Paste:=xlFormats ' Formate
End With
Application.CutCopyMode = False

End Sub</pre>


Ich finde einfach nicht heraus woran es liegt.
Kann mir da bitte wer weiter helfen?

Danke und ein schönes We im vorraus!
gruß
ChrisNa

ps. es ist noch nicht fertig nur ein teil - falls wer den sinn des ganzen sucht :)

  


Betrifft: AW: Anwendungs oder objektorientierter Fehler :( von: ChrisL
Geschrieben am: 20.08.2004 17:57:08

Hi Chris

ThisWorkbook.Worksheets(2).Range("A" & zähler - zähler & ":A" & zähler - 1 & "").Select

Variable zähler ist irgend eine Zahl z.B. 8.

8 - 8 = 0

...und eine Zelle A0 gibt es nicht.

Find gut, dass du die Idee mit dem With-Rahmen aufgenommen hast, nur scheint der ganze Code auf die Bedingung...
ThisWorkbook.Worksheets(2)
... zuzutrefen, deshalb würde ich es sauber lösen und am Anfang und Schluss vom Code den Rahmen setzen und im Code selber konsequent darauf verzichten...

Sub t()
With ThisWorkbook.Worksheets(2)
    ' dein Makro
End with
End Sub


Zudem schau mal hier...
https://www.herber.de/xlfaq/xlbasics/main_sel.htm

Gruss
Chris


  


Betrifft: AW: Anwendungs oder objektorientierter Fehler :( von: harry
Geschrieben am: 20.08.2004 17:57:35

hi,
ungetestet denke ich mal, dass zähler-zähler 0 ergibt. wenn du 1 möchtest, musst du zähler + 1 - zähler nehmen.

liebe grüße,
harry


  


Betrifft: 0 + 1 gibt immer 1 ;-) o.T. von: ChrisL
Geschrieben am: 20.08.2004 18:10:17

Gruss
Chris


  


Betrifft: AW: das wüßte ich aber ;-) in der Politik auch? von: andre
Geschrieben am: 20.08.2004 18:46:19




  


Betrifft: Anwendungs oder objektorientierter Fehler :( von: ChrisNa
Geschrieben am: 20.08.2004 18:55:28

Hallo ChrisL, Hallo harry,

habe an besagter Stelle +1 eingefügt.

Range("A" & zähler + 1 - zähler & ":A" & zähler - 1 & "").Select

Nun würde der zu selectierende Zellebereich zwischen A1 und Ax liegen.
trotz alledem tritt der Anwendungs und objektorientierte Fehler wieder auf.

Kann es daran liegen das ich zwischen den Spalten springe?

In Spalte B:B baue ich das Jahr auf und in A:A will ich die Wochen zu KW zusammen fassen.

das ich A0 nicht selectieren konnte ist nun logisch (auch wenn ihrs mir erst zeigen mussstet :) )nun bin ich wieder ratlos.

Ich denke ich werd jetzt abschalten und meinen Geist bei kickern entwirren.

Danke

gruß ChrisNa


  


Betrifft: AW: Anwendungs oder objektorientierter Fehler :( von: harry
Geschrieben am: 20.08.2004 22:25:41

bei range treten öfters probleme auf, versuch
activesheet.range(cells(1,zähler + 1 - zähler), cells(1,zähler - 1)).select
oder
activesheet.range(activesheet.cells(1,zähler + 1 - zähler), activesheet.cells(1,zähler - 1)).select
oder
dim myrange as range
set myrange = activesheet.range(activesheet.cells(1,zähler + 1 - zähler), activesheet.cells(1,zähler - 1))
myrange.select

hoffe, eine version klappt. dreh jetzt ab und fliege nach kreta :-))))))


  


Betrifft: AW: Anwendungs oder objektorientierter Fehler :( von: ChrisL
Geschrieben am: 21.08.2004 00:05:22

Hi Chris

ergibt keinen Sinn...

for zähler = 1 to 10
msgbox zähler + 1 - zähler
next

Gruss
Chris


 

Beiträge aus den Excel-Beispielen zum Thema "Anwendungs oder objektorientierter Fehler :("