Supportnet / Forum / Tabellenkalkulation
Grundlage Makro / VBA
Frage
Hallo,
ich habe da mal eine fundamentale Frage.
Oft sehe ich Antworten zu irgendwelchen Fragen, die in Form einer VBA verschickt werden.
Ich selbst habe auch schon eine solche Antwort erhalten.
Ich gehe folgendermaßen vor, wenn ich eine solche Antwort erhalte:
VBA-Umgebung mit ALT+F11 öffnen
Es sollten zwei Fenster zu sehen sein. Das linke ist der Projekt-Explorer, falls dieser nicht da ist mit STRG+r öffnen; dort klickst du mit rechts auf "VBA-Projekt(Name deiner Mappe) und wählst Einfügen=>Modul.
In dem sich darauf sich öffnenden Fenster (rechts) kopierst du den Code hinein.
Mit ALT+F11 von der VBA-Umgebung wieder zu Excel wechseln.
So weit, so gut. Aber bei mir läuft das leider nicht. Muss ich in dem Code einen Namen z.B. Arbeitsblattnamen einfügen? Wo? Und kann ich dafür dann einen Shortcut definieren?
Ein Beispiel wäre folgender Code, mein Arbeitsblatt heißt Marke und meine Excel-Datei heißt Auto:
Sub Makro1()
Dim zeile As Long, zeile1 As Long
zeile = 1
Do While zeile < Cells(Rows.Count, 1).End(xlUp)
For zeile1 = 1 To Cells(Rows.Count, 1).End(xlUp).Row Step 18
Cells(zeile, 2).FormulaLocal = "=A" & zeile1
zeile = zeile + 1
Next
Loop
End Sub
Danke
Antwort 1 von Saarbauer
Hallo,
dein Problem ist wahrscheinlich dein Makro selbst
Sub Makro1()
Dim zeile As Long, zeile1 As Long
zeile = 1
Do While zeile < Cells(Rows.Count, 1).End(xlUp) -> 1.Schleife mit Schrittweite 1
For zeile1 = 1 To Cells(Rows.Count, 1).End(xlUp).Row Step 18 -> 2.Schleife, mit schrittweie 18
Cells(zeile, 2).FormulaLocal = "=A" & zeile1
zeile = zeile + 1 -> 1. Schleife Indexehöhung
Next -> Ende 2. Schleife und Indexehöhung
Loop -> Ende 1. Schleife
End Sub
du benutzt für beide Schleifen die gleiche Variabele zeile führt zu Problemen. Da ich nicht weiss, was du vorhast solltest du deine Schleifen mal anders aufbauen oder für eine Schleife den Namen ändern
Gruß
Helmut
dein Problem ist wahrscheinlich dein Makro selbst
Sub Makro1()
Dim zeile As Long, zeile1 As Long
zeile = 1
Do While zeile < Cells(Rows.Count, 1).End(xlUp) -> 1.Schleife mit Schrittweite 1
For zeile1 = 1 To Cells(Rows.Count, 1).End(xlUp).Row Step 18 -> 2.Schleife, mit schrittweie 18
Cells(zeile, 2).FormulaLocal = "=A" & zeile1
zeile = zeile + 1 -> 1. Schleife Indexehöhung
Next -> Ende 2. Schleife und Indexehöhung
Loop -> Ende 1. Schleife
End Sub
du benutzt für beide Schleifen die gleiche Variabele zeile führt zu Problemen. Da ich nicht weiss, was du vorhast solltest du deine Schleifen mal anders aufbauen oder für eine Schleife den Namen ändern
Gruß
Helmut
Antwort 2 von nighty
hi all :)
unterscheiden sollte man zwichen ereignissen wie functionen wie makros
ereignisse werden im projektexplorer der mappe oder tabelle zugewiesen die dann automatisch laufen
functionen gehören in ein allgemeines modul und sind anschliessend unter formel einfuegen verfuegbar
makros gehören in ein allgemeines modul
in deinem falle heisst das makro makro1
und sollte in einem allgemeinen modul sein
ein shortcut laesst sich unter extras > makro > makros mit anschliessender auswahl eines makros unter optionen zuweisen alternativ ein element der steuelement tollbox
erreichbar mit rechtsclick auf einer freien stelle der excelmenueleiste
dort entwurfsmodus anwaehlen > befehlsschaltflaeche auswaehlen > positionieren
auf diesen button rechtsclick > code anzeigen
dort den namen des makros in diesen falle makro1 mittig einfuegen > vbfenster schliessen
nochmals rechstclick auf den button > eigenschaften anwaehlen und unter caption den namen des button aendern > eigenschaftsfenster schliessen
entwurfsmodus beenden > toolbox schliessen
fertig ist der button der nun gedrueckt werden kann um das makro1 zu starten
gruss nighty
unterscheiden sollte man zwichen ereignissen wie functionen wie makros
ereignisse werden im projektexplorer der mappe oder tabelle zugewiesen die dann automatisch laufen
functionen gehören in ein allgemeines modul und sind anschliessend unter formel einfuegen verfuegbar
makros gehören in ein allgemeines modul
in deinem falle heisst das makro makro1
und sollte in einem allgemeinen modul sein
ein shortcut laesst sich unter extras > makro > makros mit anschliessender auswahl eines makros unter optionen zuweisen alternativ ein element der steuelement tollbox
erreichbar mit rechtsclick auf einer freien stelle der excelmenueleiste
dort entwurfsmodus anwaehlen > befehlsschaltflaeche auswaehlen > positionieren
auf diesen button rechtsclick > code anzeigen
dort den namen des makros in diesen falle makro1 mittig einfuegen > vbfenster schliessen
nochmals rechstclick auf den button > eigenschaften anwaehlen und unter caption den namen des button aendern > eigenschaftsfenster schliessen
entwurfsmodus beenden > toolbox schliessen
fertig ist der button der nun gedrueckt werden kann um das makro1 zu starten
gruss nighty

