Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
240to244
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
240to244
240to244
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

CommandButton undFormel direkt kopieren

CommandButton undFormel direkt kopieren
05.04.2003 14:26:05
Carsten
Hallo Wochenend-Programmierer,

habe mal wieder 2 Fragen.

Auf mehreren Tabellenblättern befindet sich ein Steuerelement Commandbutton, über den ich „Modul1.Positionsnummern_Bindestriche“ aufrufe.

Dahinter steht folgender Code, der bei Klick auf den Button für das jeweilige Blatt ausgeführt werden soll.

Sub Positionsnummern_Bindestriche()

Dim intLZ As Integer ‘Ermittlung der letzten leeren Zeile

Range("A4:A65536").ClearContents
intLZ = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
Range("A3").Copy Range(Cells(4, 1), Cells(intLZ + 1, 1))


Range("B4:B65536").ClearContents
Range("B3").Copy Range(Cells(3, 2), Cells(intLZ, 2))


Range("H3:H65536").ClearContents
Range(Cells(3, 8), Cells(intLZ, 8)) = "."

End Sub

Folgende Fehlermeldung taucht auf.

Die Copy-Methode des Range-Objektes ist fehlerhaft.

Ein Button aus der Formularleiste und dann eine Makroverknüpfung würde das Problem lösen, aber was ist an meiner Methode falsch bzw. was muß ergänzt werden.

Vorher habe ich das über selektieren gemacht (aber der Code war dann sehr lang), da hat’s funktioniert.

Außerdem würde ich anstelle Range(“A3“) zu kopieren lieber die Formel, die dahinter steht, direkt kopieren,

also:

Range(Cells(4, 1), Cells(intLZ + 1, 1)) = "=WENN(C24<>"";ANZAHL2(INDIREKT("c3:c"&ZEILE()));"")"

Aber dann taucht beim kompilieren bei c3 auf: Erwartet: Anweisungsende.

Was mache ich da?

Vielen Dank für die Hilfe!

PS:

Das Problem mit dem Speichern habe ich inzwischen gelöst (siehe weiter unten).


13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: CommandButton undFormel direkt kopieren
05.04.2003 14:50:20
Ramses

Hallo,

wenn schon, müsste es heissen:

Range("A3").Copy Destination:= Range(Cells(4, 1), Cells(intLZ + 1, 1))

und das andere muss heissen:
Range(Cells(4, 1), Cells(intlz + 1, 1)).FormulaLocal = "=WENN(C24<>"""";ANZAHL2(INDIREKT(""c3:c"" & ZEILE()));"""")"

Ausserdem müssen in einer solchen Formel-Anweisung alle Anführungsstriche die in der Formel vorkommen doppelt gesetzt werden, sonst interpretiert EXCEL diese als Anweisungsende.

Gruss Rainer

Re: CommandButton undFormel direkt kopieren
05.04.2003 15:54:16
Carsten

Hallo Ramses,

danke für den Tip mit den Anführugsstrichen.

Trotz Destination kommt immer noch die gleiche Fehlermeldung.

Carsten


Anzeige
Re: CommandButton undFormel direkt kopieren
05.04.2003 16:49:40
Knut

Der Code funktioniert schon, wenn die Formel richtig formuliert ist. Zeilen sollten aber immer als Long deklariert sein.
Hat der Commandbutton womöglich den Focus?
Knut

falsche Stelle siehe oben
05.04.2003 16:57:47
Knut

vv

Re: CommandButton undFormel direkt kopieren
05.04.2003 17:06:55
Ramses

Hallo,

das hat mit dem Focus auf den Button nichts zu tun.
Die Anweisung wie ich sie geschrieben habe funktioniert.

Zeig mal den Codeausschnitt aus dem Makro den du bisher hast, sonst kommen wir nicht weiter.

Gruss Rainer

Re: CommandButton undFormel direkt kopieren
05.04.2003 17:06:55
Ramses

Hallo,

das hat mit dem Focus auf den Button nichts zu tun.
Die Anweisung wie ich sie geschrieben habe funktioniert.

Zeig mal den Codeausschnitt aus dem Makro den du bisher hast, sonst kommen wir nicht weiter.

Gruss Rainer

Anzeige
Code bisher
05.04.2003 19:30:08
Carsten

Hallo Rainer,

hier der bisherige Code:

With ActiveWorkbook.ActiveSheet

.Range("A4:A65536").ClearContents
intLZ = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
.Range("A3").Select
Selection.Copy
.Range(Cells(4, 1), Cells(intLZ + 1, 1)).Select
.Paste

.Range("B4:B65536").ClearContents
.Range("B3").Select
Selection.Copy
.Range(Cells(3, 2), Cells(intLZ, 2)).Select
.Paste

.Range("H3:H65536").ClearContents
.Range(Cells(3, 8), Cells(intLZ, 8)) = "."

End With

Carsten

Anzeige
Kann nicht gehen... :-))
05.04.2003 19:54:11
Ramses

Hallo Carsten

weil du hinter der Destination-Anweisung vermutlich auch die Select-Anweisung stehen hast lassen:


Sub Demo_Carsten()
Dim intLz As Long
intLz = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
With ActiveWorkbook.ActiveSheet
    .Range("A4:A65536").ClearContents
    .Range("A3").Copy Destination:=.Range(Cells(4, 1), Cells(intLz + 1, 1))
    .Range("B4:B65536").ClearContents
    'Was willst du denn damit erreichen ?
    'Oben löscht du die Spalte B
    'und hier willst du eine Zelle kopieren ????
    .Range("B3").Copy Destination:=.Range(Cells(3, 2), Cells(intLz, 2))
    .Range("H3:H65536").ClearContents
    .Range(Cells(3, 8), Cells(intLz, 8)) = "."
End With
End Sub 
     Code eingefügt mit Syntaxhighlighter 1.16

Der Code ist getestet und funktioniert :-)

Gruss Rainer

Anzeige
Re: Kann nicht gehen... :-))
05.04.2003 21:42:31
Carsten

Hallo Rainer,

erstmal vielen Dank für die Mühe! Du wirst es nicht glauben, aber die Fehlermeldung tauch noch immer auf. Warum weiß ich auch nicht.

Übrigens lösche ich von Zeile B4 ab, B3 bleibt immer stehen!
Die Select Anweisung hatte ich auch nicht stehen lassen.

Aber nochmal danke,

Carsten

Problem gelöst!!!
05.04.2003 21:58:09
Carsten

Habe mal TakeFocusOnClick auf False gesetzt, also doch was Knut meinte! Dann läufts.

Also noch ein schönes Wochenende, euch beiden!

Carsten



Re: Kann nicht gehen... :-))
05.04.2003 21:58:41
Ramses

Hallo,

OK,.. das mit B4 habe ich scheinbar nicht richtig gelesen :-( Sorry.
Aber nun bin ich doch irritiert.
Den Code habe ich extra laufen lassen und bei mir funktioniert er einwandfrei, auch jetzt noch ?
Welche Zeile wird den markiert ?

Setz mal einen Haltepunkt auf die Zeile mit "With..." und lass den Code aus dem VB-Editor laufen.
Wenn der Code anhält, fährst du mit dem Mauszeiger auf "intLz", in einem Tooltip-Fenster zeigt dir der Editor nun den Inhalt der Variable an.
Der muss natürlich grösser 4 sein.

Gruss Rainer


Anzeige
Re: Kann nicht gehen... :-))
05.04.2003 21:58:42
Ramses

Hallo,

OK,.. das mit B4 habe ich scheinbar nicht richtig gelesen :-( Sorry.
Aber nun bin ich doch irritiert.
Den Code habe ich extra laufen lassen und bei mir funktioniert er einwandfrei, auch jetzt noch ?
Welche Zeile wird den markiert ?

Setz mal einen Haltepunkt auf die Zeile mit "With..." und lass den Code aus dem VB-Editor laufen.
Wenn der Code anhält, fährst du mit dem Mauszeiger auf "intLz", in einem Tooltip-Fenster zeigt dir der Editor nun den Inhalt der Variable an.
Der muss natürlich grösser 4 sein.

Gruss Rainer


Re: Kann nicht gehen... :-))
05.04.2003 22:42:20
Carsten

Hallo Rainer,

der Inhalt ist 3




Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige