Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
676to680
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
676to680
676to680
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

wo ist der Fehler?

wo ist der Fehler?
04.10.2005 05:45:50
gnilk
Hallo Leute,
kann mir vielleicht jemand sagen, wo hier der Fehler ist?
Worksheets("Daten").Range(Range("BF11"), Range("BF11").End(xlDown)).Select
Ich will doch nur, dass der Bereich ausgewaehlt wird, der von der Zelle BF11 bis zum Ende der Werte geht. Ich verstehe meinen Fehler einfach nicht. Es ist doch alles definiert.
Wenn ich das Makro abrufe, dann kommt die Fehlermeldung:
Run-time error '1004':
Appication-definied or object-definied error
Wenn ich ganz normal den Befehl...
Worksheets("Daten").Range("BF11").Select
..eingebe, dann springt das Makro artig in die Zelle BF11
Ich weiss ich soll die Finger vom Select lassen. Aber es ist nur die Vorhut. Eigentlich soll die Summe des markierten Bereiches in einer anderen Zelle eines anderen Worksheets angezeigt werden. Das habe ich aber alles schon geschrieben und es laeuft super.
Hier der Probecode:

Sub test()
'   soll einen Bereich summieren, der in einer Spalte ist und bis End(xlDown) geht
Dim rng As Range
Set rng = Range(Range("A1"), Range("A1").End(xlDown))
Worksheets("sheet2").Range("A1").Offset(30, 0) = Application.WorksheetFunction.Sum(rng)
End Sub

Bitte helft mir.
Danke
Gnilk

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wo ist der Fehler?
04.10.2005 06:35:52
Hilbman
Hallo Gnilk,
Versuche folgenden Code:

Sub test()
Dim rng As Range
Dim xx As Worksheet, yy As Worksheet
Set xx = Worksheet("Sheet1")
Set yy = Worksheet("Sheet2")
letzteZeile = xx.Cells(Rows.Count, 1).End(xlUp).Row
Set rng = xx.Range("A1:A" & letzteZeile)
yy.Range("A1").Offset(30, 0) = Application.WorksheetFunction.Sum(rng)
End Sub

Gruß Hilbman
AW: wo ist der Fehler?
04.10.2005 06:51:42
Hilbman
Hallo Gnilk,
Kleiner Tipfehler in meinem Beitrag muß heißen
*
*
Set xx = Worksheets("Sheet1")
Set yy = Worksheets("Sheet2")
*
*
Sorry
Gruß Hilbman

Anzeige
AW: wo ist der Fehler?
04.10.2005 06:52:01
Hilbman
Hallo Gnilk,
Kleiner Tipfehler in meinem Beitrag muß heißen
*
*
Set xx = Worksheets("Sheet1")
Set yy = Worksheets("Sheet2")
*
*
Sorry
Gruß Hilbman

AW: wo ist der Fehler?
04.10.2005 07:04:15
gnilk
Hallo Hilbman,
ich habe Deinen Code umgestellt, so dass er auf mein sheet passt. Aber irgendwie
funktioniert es immer noch nicht. Jetzt kommt bei Set xx = Worksheet("Daten") bei
Worksheet die Fehlermeldung:

Sub or 

Function not definied
So sieht mein Code aus:

Sub test_01()
'   soll einen Bereich summieren, der in einer Spalte ist und bis End(xlDown) geht
'   vom Hilbman
Dim rng As Range
Dim xx As Worksheet, yy As Worksheet
Set xx = Worksheet("Daten")
Set yy = Worksheet("overview (daily)")
letzteZeile = xx.Cells(Rows.Count, 1).End(xlUp).Row
Set rng = xx.Range("BO11:BO" & letzteZeile)
yy.Range("A1").Offset(2, 2) = Application.WorksheetFunction.Sum(rng)
End Sub

Das Problem ist, dass ich eine Trennung in meiner Tabelle habe. Ich weiss nicht genau
was Du mit dem Rows.Count machen wolltest. Mir waere es lieber, wenn man xldown macht.
Da bin ich mir sicher, dass er die Trennung nicht mit nimmt.
Kannst Du da noch einmal drueber schauen?
Ciao
Gnilk
PS: Mach jetzt erst einmal teatime.
Anzeige
AW: wo ist der Fehler?
04.10.2005 07:10:35
Matthias
Hallo Gnilk,
WorksheetS:
Set xx = Worksheets("Daten")
Set yy = Worksheets("overview (daily)")
Gruß Matthias
AW: wo ist der Fehler?
04.10.2005 07:24:28
gnilk
Hallo,
habe ich auch schon probiert Funktioniert aber irgendwie trotzdem nicht. Kommt zwar kein
Fehler mehr, aber das Makro laeuft nicht.
Trotzdem Danke
Gnilk
AW: wo ist der Fehler?
04.10.2005 07:40:11
Matthias
Hallo Gnilk,
mit Range(Rows.Count, "BO").End(xlUp).Row
erhälst du die letzte beschriebene Zelle (solange BO65536 leer ist).
mit Range("BO1").End(xlDown).Row
erhältst du die letzte Ziel vor der nächsten Leerzelle in BO
aber du hast jetzt einem BO11 und einmal BO1 stehen... ?
hier mal ab BO1:

Sub test_01()
Dim rng As Range
Dim letzteZeile As Long
Dim xx As Worksheet, yy As Worksheet
Set xx = Worksheets("Daten")
Set yy = Worksheets("overview (daily)")
letzteZeile = xx.Range("BO1").End(xlDown).Row
Set rng = xx.Range("BO1:BO" & letzteZeile)
yy.Range("A1").Offset(2, 2) = Application.WorksheetFunction.Sum(rng)
End Sub

Gruß Matthias
Anzeige
AW: wo ist der Fehler?
04.10.2005 16:05:08
Hilbman
Hallo Gnilk,
Ich war bis jetzt unterwegs.
Brauchst noch Hilfe, oder ist jetzt alles klar ?
Gruß Hilbman
AW: wo ist der Fehler?
04.10.2005 07:41:03
Heinz
Hallo,
Worksheets("Daten").Range(Worksheets("Daten").Range("BF11"), Worksheets("Daten").Range("BF11").End(xlDown)).Select
oder
Dim ws As Worksheet
Set ws = Worksheets("Daten")
ws.Range(ws.Range("BF11"), ws.Range("BF11").End(xlDown)).Select
Wenn du dein Makro aus der Tabelle Daten aufrufst läufts auch so, nicht aber, wen eine andere Tabelle die aktive ist.
Gruß
Heinz
AW: wo ist der Fehler?
05.10.2005 07:44:29
gnilk
Hallo an alle,
erst einmal vielen Dank fuer die zahlreiche Unterstuetzung. Leider geht es immer noch
nicht. Ich habe den letzten Code von Matthias G genommen. Alles hat wunderbar geklappt.
Doch dann musste ich wieder eine kleine Abweichung machen und die machte irgendwie nicht.
Diese sheet ist in zwei Bereiche unterteilt. Diesmal muss ich eine Summe aus dem anderen
Teil der Tabelle bilden. Auf jeden Fall funktioniert dieser Code nicht:

Sub test()
Dim rng_04 As Range
Dim letzteZeile_04 As Long
'   erste Zeile vom "brought forward"
Dim erste_bf As Long
Dim xx As Worksheet, yy As Worksheet
Set xx = Worksheets("Daten")
Set yy = Worksheets("overview (daily)")
'       hier wird die Summe vom "brought forward" gebildet
erste_bf = xx.Range("BM11").End(xlDown).End(xlDown).Offset(0, 5).Row
letzteZeile_04 = xx.Range("BM11").End(xlDown).End(xlDown).End(xlDown).Offset(0, 5).Row
Set rng_04 = xx.Range(erste_bf & letzteZeile_04)
yy.Range("A1").Offset(3, 5) = Application.WorksheetFunction.Sum(rng_04)
End Sub

Ist nur ein Teil des Makros. Der Teil der den Fehler hat. Fehler ist wieder Run Time
Error '1004'. Method 'Range' of obejct '_Worksheet' failed.
Koennt ihr hier inrgendwelche Fehler sehen? Ich habe mal erste_bf und letzteZeile_04 in
einem gesonderten

Sub mit Select getestet, ob es ueberhaupt die richtigen Zellen sind.
Es sind die richtigen Zellen. Ich verstehe es einfach nicht.
Vielen Dank im Voraus
Ciao
Gnilk
PS: Koennt ihr die Frage immer als unbeantwortet lassen falls ihr nur ein
Verstaendnisproblem habt? Vielleicht kann jemand anderes etwas damit anfangen

Anzeige
AW: wo ist der Fehler?
05.10.2005 13:37:52
Hilbman
Hallo Gnilk,
Warum arbeitest Du mit Offset - macht die Sache nur komplizierter.
Ich habe jetzt deinen Code etwas verändert. Die Offset-sache habe ich nicht
berücksichtigt. Soll nur als Beispiel dienen !!

Sub test()
Dim rng_04 As Range
Dim letzteZeile_04 As Long
'   erste Zeile vom "brought forward"
Dim erste_bf As Long
Dim xx As Worksheet, yy As Worksheet
Set xx = Worksheets("Daten")
Set yy = Worksheets("overview (daily)")
'    hier wird die Summe vom "brought forward" gebildet
'    erste_bf = xx.Range("BM11").End(xlDown).End(xlDown).Offset(0, 5).Row
erste_bf = xx.Cells(1, 65).End(xlDown).Row     '******
'   etzteZeile_04 = xx.Range("BM11").End(xlDown).End(xlDown).End(xlDown).Offset(0,5).Row
letzteZeile_04 = xx.Cells(10000, 65).End(xlUp).Row    '******
Set rng_04 = xx.Range("BM" & erste_bf & ":" & "BM" & letzteZeile_04)
'    yy.Range("A1").Offset(3, 5) = Application.WorksheetFunction.Sum(rng_04)
'    oder einfacher
yy.Cells(4, 6) = Application.WorksheetFunction.Sum(rng_04)
End Sub

Zur letzten Zeile :
Du mußt nicht bei der maximalen Zeilenanzahl (Mswgbox Rows.count = 65536) beginnen. Man kann jederzeit ab einer
beliebigen Zeile die letzte Zeile nach "oben Richtung Zeile 1" beginnen. Im Beispiel habe ich mal 10000 angenommmen, D.h. Wenn du zwei oder mehrere Bereiche in einer Tabelle hast, dann sind diese Bereich in der Regel nicht "dynamisch" plaziert. Man weiß also wo ein Bereich beginnt und wo er aufhört.
Das Gleiche gilt für die Suche nach der ersten beschriebenen Zelle.
Siehe die Zeilen , die mit ' ****** markiert sind.
Manchmal ist es ein Problem die Spalten A bis IV in die Spaltennummer umzuwandeln. Dann gehe unter Excel - Extras - Optionen - Allgemein und mache bei Z1S1-Bezugsart den Haken rein. Dann werden Dir die Spalten mit der Spaltenzahl angezeigt.
Gruß Hilbman
Anzeige
DANKE
06.10.2005 03:07:14
gnilk
Hallo Hilbman,
Du bist echt der Beste. Meine Frage wurde zu 100% beantwortet. Vielen Dank fuer die Zeit, die Du schon in meine Beitraege reingesteckt hast. Ich wuerde auch gerne im Forum helfen koennen. Leider sind die meisten Probleme zu komplex fuer mein mageres VBA Wissen. Ich hoffe, dass ich aber auch irgendwann mal Beitraege beantworten kann.
Die Sache mit dem Offset brauche ich, da naemlich nicht immer in der Reihe die ich wuensche Werte eingetragen sind. Daher muss ich die Zelle suchen, in der immer Werte sind und dann fuenf nach rechts gehen. Gut eigentlich ist es echt unnoetig, da das Makro eh immer den ersten Wert findet. Aber egal. Noch kann ich naemlich nicht so komplex denken und daher programmiere ich lieber mal auf Nummer sicher.
Gestern habe ich mir noch einmal mein erstes Makro durchgelesen was ich geschrieben habe. Oh meinn Gott! Das war mein erster Gedanke. Wie schwierig das geschrieben war. Voll umstaendlich. Ich glaube ich werde es noch einmal neu schreiben. Dies habe ich Dir nur mitgeteilt um zu bestaetigen, dass mein Wissen doch langsam in VBA zunimmt. Traue mich jedoch nicht im Forum gute VBA Kenntnisse anzukreuzen, wenn ich eine Frage stelle.
So genug gelabert. Ich wuensche Die einen schoenen Tag und noch einmal vielen Dank fuer Deine Hilfe. Du freust Dich schon bestimmt auf eine meiner naechsten Fragen. :-) Nur Geduld, sie kommt bestimmt. :-)
Ciao
Gnilk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige