Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

VBA Formel kopieren und ausführen | Herbers Excel-Forum


Betrifft: VBA Formel kopieren und ausführen von: bluesky61@team-ab.de
Geschrieben am: 30.01.2010 08:49:30

Hallo zusammen,

aus Access hole ich per Query immer wieder verschiedene Datensatzmengen zur weiteren Verarbeitung in ein Worksheet ("Produktion"). Überschriften A1:T1 , Datensätze unterschiedliche Anzahl

Zur weiteren Auswertung, muss ich häufig noch Formeln daneben setzen (z.B. in Spalte U)

Da normalerweise zumindest die Zeile 2 gefüllt ist, habe ich in U2 schon eine Formel:
=Kalenderwoche(A2;2), diese Formel ist für meine Wünsche ausreichend.

1. die Anzahl der Datensätze ist mal mehr, mal weniger
2. die Spalte A ist immer gefüllt (hier gibt es innerhalb des Imports keine Leerzellen)

Nun möchte ich folgendes erreichen:
A. nach einem neuen Datenimport sollen die Formeln beginnend mit U3 gelöscht werden
B. Die Formel aus U2 soll bis zur Zeile des letzten Datensatzes in jede Zeile kopiert werden
C. alles sollte, einschließlich der Berechnung automatisch nach dem Import ablaufen

Spezial:
Gibt es auch eine Lösung für den Fall, dass in Spalte A doch mal ein Leerfeld vorkommt?

Hat von Euch jemand eine tolle Lösung für mich? Würde mich sehr freuen

  

Betrifft: AW: VBA Formel kopieren und ausführen von: Christian
Geschrieben am: 30.01.2010 09:36:34

Hallo,
so zB:

Option Explicit

Sub Makro()
    Dim lngLR As Long
    
    With Sheets("Tabelle1")
        .Columns(21).ClearContents
        lngLR = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Cells(2, 21).FormulaR1C1 = "=KALENDERWOCHE(RC[-20],2)"
        .Cells(2, 21).Resize(lngLR).FillDown
    End With
End Sub
Gruuß
Christian


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Andreas
Geschrieben am: 30.01.2010 11:04:59

Hallo Christian,
vielen Dank für Deine Antwort.
Habe das Skript mittels Editor eingefügt. Makros erlauben, eingestellt, aber es tut sich rein garnichts?!


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Reinhard
Geschrieben am: 30.01.2010 11:14:19

Hallo Andreas,

Kalenderwoche rechnet falsch, siehe:
http://excelformeln.de/formeln.html?welcher=7

Gehe in den Editor, stelle den Curser mitten in den Code und drücke (mehrmals) F8, was tut sich?
Werden die Code zeilen nacheinader markiert und ausgeführt?

Ich hab grad kein 2003, soweit ich mich erinnere muß man da zwei Häkchen setzen bzw. entfernen für Makrozulassung.

Gruß
Reinhard


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Andreas
Geschrieben am: 30.01.2010 11:27:27

Hi
den Rechenfehler kann ich vernachlässigen. Bei mir beginnt der 1.1.2010 in der ersten KW.

F8 habe ich gedrückt. Bis End sub. Es wurde nichts benmängelt.

Das Makro habe ich im Table 3 Worksheet einfgefügt. Dort liegen auch meine Daten.

Ein Hinweis: arbeite hier mit 2007, aber im 2003er Modus, da ich auf der Arbeit nur 2003 habe.

Gruß
Andreas


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Christian
Geschrieben am: 30.01.2010 11:33:53

Hallo Andreas,
der Code muss in ein algemeines Modul
Den Tabellennamen im Code musst du anpassen.

Gruß
Christian


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Andreas
Geschrieben am: 30.01.2010 11:50:47

Hier brauche ich jetzt einen Blindfluglotsen:

Meine Anzeigen:
Projekt-VBAProject (Fenster): Markiert "Tabelle3 (Produktion)
Eigenschaften-Tabelle3 (Fenster): "Tabelle3 Worksheet" (nichts geändert)

Dateiname.xls - Tabelle3 (Code) (Fenster)
oben links Pulldown: "(Allgemein)"
oben rechts Pulldown: "Formel_kopieren"
Hauptfenster: (unter "Option Explicit" ist ein Trennstrich beim Reinkopieren eingefügt worden.
Option Explicit

Sub Formel_kopieren()
    Dim lngLR As Long
    
    With Sheets("Tabelle3")
        .Columns(21).ClearContents
        lngLR = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Cells(2, 21).FormulaR1C1 = "=KALENDERWOCHE(RC[-20],2)"
        .Cells(2, 21).Resize(lngLR).FillDown
    End With
End Sub
Das Makro wird zum Ausführen auch angezeigt. Eine Aktion ist nicht sichtbar.
Vorschlag:
Hast Du irgendein kleines Minimalskript (z.b. schreib in A1 "wahr") ohne Schnörkel? Das kann ich dann ja einmal einfügen und testen, ob der Fehler an Excel liegt.


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Christian
Geschrieben am: 30.01.2010 12:11:43

Hallo Andreas

Im VBA Editor: Einfügen - Modul:
hier kopierst du den Code rein

Im Code anpassen:
With Sheets("Produktion")

der Rest bleibt

Das was du ins HauptFenster der Tabelle reinkopiert hast, schmießt du wieder raus.

Ein DemoScript:

Sub tt()
    MsgBox "Hallo"
End Sub
Gruß
Christian


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Andreas
Geschrieben am: 30.01.2010 12:38:25

Also,
nur die Msgbox funktioniert. Die wird angezeigt.
Habe nichts weiter reingepackt.

Im Code anpassen:
With Sheets("Produktion")

kriege ich nicht hin. Da läuft nichts. Kann es sein, dass da auch in dem anderen Skript etwas nicht ok ist?

With Sheets("Tabelle3")

Es ist Tabelle3, aber wird die auch gefunden?


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Andreas
Geschrieben am: 30.01.2010 12:42:01

die msgbox klappt mit with sheets.


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Christian
Geschrieben am: 30.01.2010 13:06:31

ein Bsp.

https://www.herber.de/bbs/user/67643.xls

Gruß
Christian


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Andreas
Geschrieben am: 30.01.2010 13:25:54

Danke
habe das makro ausgeführt und wieder hochgeladen. Mit einigen Anmerkungen.
Die vorhin beschriebenen Fehler treten hier auch auf.

https://www.herber.de/bbs/user/67644.xls


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Reinhard
Geschrieben am: 30.01.2010 13:36:23

Hallo Andreas,

Sub Makro()
Dim lngLR As Long
With Sheets("Produktion")
   .Range("U2:U50000").ClearContents
   lngLR = .Cells(.Rows.Count, 1).End(xlUp).Row
   .Cells(2, 21).Resize(lngLR - 1).FormulaR1C1 = "=KALENDERWOCHE(RC[-20],2)"
End With
End Sub

Gruß
Reinhard


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Christian
Geschrieben am: 30.01.2010 13:43:17

Deinen Fehler "#NAME?" kann ich nicht nachvollziehen. Das AddIn "Analyse-Funktion" muss natürlich aktiviert sein.
Die Überschrift kannste ja anschließend wieder reinschreiben zb. mit:
.Cells(1, 21) = "KW"

Gruß
Christian


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Andreas
Geschrieben am: 31.01.2010 20:10:52

Hallo Christian,
noch einmal vielen Dank für Deine Hilfe.

Morgen werde ich sehen, wie das Formatproblem sich in 2003 auswirkt.
"Analyse-Funktion" ist aktiviert.

Bis bald
Andreas


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Andreas
Geschrieben am: 30.01.2010 13:11:28

Hi great mistake!

Das Makro wurde in dem falschen sheet ausgeführt.

Also es wird ausgeführt.

Die Spaltenüberschrift wird gelöscht
Die Formel wird ein Feld zu weit eingefügt (Datensätze + 1)

Die Formel wird nicht als Formel erkannt. Auch mit F9 neuberechnen geht nichts.
Die Formel sieht auch im Formeleditor korrekt aus. Fehlerüberprüfung: Fehlertyp #Name
Wenn ich in den Formeleditor klicke und wieder raus gehe, wird der Text als Formel erkannt.


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Reinhard
Geschrieben am: 30.01.2010 12:08:32

Hallo Andreas,

prinzipiell kommt Standardcode in allgemeine Module (Einfügen---Modul) wie z.B. Modul1.
Du hast Standardcode. Den mußt du selbst starten.

Nun kennt Excel noch sog. Ereigniscode, das ist Code der AUTOMATISCH durchgeführt wird wenn ganz bestimmte Eriegnisse auftreten.

Doppelklicke im Editor links auf einen Blattnamen, dann wähle oben in der Mitte "worksheet" aus. Dann siehst du rechts in dem Dropdownfeld alle Ereignisse die Exce-Vba kennt.

Wähle da z.B. Change aus, der Editor schreibt dir automatisch die Prozedurhülle hin:

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Schreib da mal
MsgBox "Huhu"
hinein.

Wenn du nun im Blatt eine beliebige Zelle abänderst kommt die Msgbox.
Du willst ja so automatischen Code.
Problem ist nur, Chnage reagiert nur auf z.B. manuelle Wertänderung einer zelle, nicht wenn sich der Zellwert durch eine Formel ändert.

Du impotierst da wohl mit Query Daten in Zellen. Jetzt weiß ich nicht auswendig ob dann das Change-Ereignis ausgelöst wird oder nicht.

Probiers einfach mal aus.
Schreibe den Code
Private Sub Worksheet_Change(ByVal Target As Range)
Msgbox "Huhu"
End Sub
im Editor in das Blattmodul, z.B. Tabelle3, dort importiere dann daten, kommt die Msgbox geht es, kommt sie nicht so geht es derart nicht das automatish hinzuzaubern.

Vielleicht ginge es dann mit dem Calculate-Ereignis...

Gruß
Reinhard


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Andreas
Geschrieben am: 30.01.2010 11:33:36

Nur so ne Frage
Formel im Worksheet liegt auf: U2
Formel: =KALENDERWOCHE(A2;2)

in Deinem Skript hast Du die Zeile:
.Cells(2, 21).FormulaR1C1 = "=KALENDERWOCHE(RC[-20],2)"

Ist hier R1C1 ok?

nicht lachen. Kenne mich in VBA nicht aus. Ist nur so eine Idee


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Christian
Geschrieben am: 30.01.2010 11:36:48

ja, R1C1 ist ok.
siehe jedoch mein letzte Antwort bzgl Modul und Tab-Name.

Gruß
Christian


  

Betrifft: AW: VBA Formel kopieren und ausführen von: Andreas
Geschrieben am: 30.01.2010 11:09:17

Ergänzung:
habe bei mir nur eine Offlinedatei. Somit kann ich keinen neuen Datenbestand reinholen.

Startet das Makro erst, wenn ein neuer Datenbestand reingeholt wird?


Beiträge aus den Excel-Beispielen zum Thema "VBA Formel kopieren und ausführen"