Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.04.2025 14:56:21
29.04.2025 13:03:33
29.04.2025 11:32:32
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variablen beim öffnen befüllen

Forumthread: Variablen beim öffnen befüllen

Variablen beim öffnen befüllen
21.06.2002 10:17:42
Thomas Wolpert
Hallo,
Meine Recherche im Archiv mir zwar schon viel weitergeholfen, aber bei meinem folgenden Problem komme ich leider nicht weiter. Ich möchte folgendes tun:
Beim Start meiner Mappe soll ein Code ablaufen, der automatisch eine mehrdimensionale Variable rs(20) aus einem Tabellenblatt "Stamm" befüllt. Diese Variablen sollten dann während der Arbeit im Tabellenblatt "Formular" ständig zur Verfügung stehen und mir , wenn ich im Formular etwas eintrage in einer MSGBox den entsprechenden Wert ausgeben.

Leider kann ich die Variablen rs(20) nicht als public definieren.

Hat jemand eine Idee? Das selbständige Ausführen der Makros würde ich entweder über den Makronamen "autoexec" oder über "private sub workbook_open()" lösen. Auch wie ich einen Code automatisch nach Eingabe starte habe ich im Archiv gefunden. Aber wie die böse Variable ihr Gedächtnis behält, da komm ich nicht drauf.
Wäre super, wenn jemand 'ne Idee hätte.
Gruß
Thomas


Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Variablen beim öffnen befüllen
21.06.2002 12:20:55
Rainer
Lieber Thomas!

Definiere die Variable in einem normalen Modulblatt am Beginn des Moduls außerhalb einer Sub oder einer Funktion; ob DIM rs(20) as ... oder PRIVAT, STATIC, GLOBAL ... (siehe in der Hilfe unter 'Gültigkeit von Variablen' nach), musst du dann selbst entscheiden). Das Befüllen der Variable würde ich in der Workbook_Open() machen.

Lieben Gruß
Rainer

Anzeige
Re: Variablen beim öffnen befüllen
21.06.2002 12:43:59
Thomas Wolpert
Hallo Rainer,

ich habe unter Modul1 jetzt folgenden Code:
Dim x, zeile
Dim rs(36)

Private Sub workbook_open()
Sheets("Stamm").Activate
For x = 0 To 20
rs(x) = Cells(x + 3, 2)
Next x
Sheets("Formular").Activate
End Sub

Ich hoffe hier liest er ein, wobei ich nicht sehe, daß das Sheet "Stamm" aktiviert ist.
Auf jeden Fall ist er nach dem öffnen im "Formular".
hier habe ich folgenden Code:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Not Intersect(Target, Range("c10:C77", "AG10:AG77")) Is Nothing Then
ActiveCell.Offset(-1, 0).Activate
zelle = ActiveCell.Address
x = ActiveCell.Value
MsgBox ("aktive Zelle: " & zelle & "/" & x & "/" & rs(x))

'Load UserForm1 das kommt später noch
'UserForm1.Show

End If
End Sub

Wenn ich jetzt unter C15 eine Zahl eingebe, kommt "Fehler beim Kompilieren: Sub oder Function nicht definiert" und meine rs(x) ist markiert.

Hast Du bitte noch eine Idee?

Viele Grüße
Thomas

P.S.: Wie machen das manche, daß in ihrem Code die Systemwerte blau sind?



Anzeige
Re: Variablen beim öffnen befüllen
21.06.2002 16:10:53
Rainer
Lieber Thomas!

Beachte Folgendes:
Der Workbook_Open() Code darf nicht in einem 'normalen' Modulblatt sein, sonst wird er nicht erkannt - also auch nicht ausgeführt. Wechsle in den VBA-Editor und klicke im Projekt-Fenster doppelt auf 'DieseArbeitsmappe'. Dort gib den Workbook_Open() Code ein.
Für die Worksheet_Change()-Ereignisprozedur klickst du doppelt auf gewünschte Tabelle, zB 'Tabelle1 (Formular)'.
Die Variablendekleration schließlich in ein normales Modul.

Ich habe den Worksheet_Change()-Code kaum geändert, da ich nicht weiß, welche Daten du darin stehen hast. So funktioniert es aber bei mir.


Ne Kleinigkeit: du lässt nur 21 Einträge einlesen, dein Array hat aber Platz für 37 Einträge.

Liebe Grüße
Rainer

P.S.:
Den formatierten Code kopiert man zwischen
~begin~
... Code ...
~end~

Anzeige
Super es klappt
21.06.2002 16:45:59
Thomas Wolpert
Hallo Rainer,
Dein Vorschlag ist super, es hat funktioniert.
Danke,danke, danke
Und die Idee mit dem

ist mir lieber als meine Lösung.
1000 Dank, ich hoffe ich kann mal was zurückgeben.

Schönes Wochenende
Thomas

Anzeige

Infobox / Tutorial

Variablen beim Öffnen befüllen in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Definiere die Variablen:

    • Gehe zu einem normalen Modul (z.B. Modul1) und definiere deine Variable. Beispiel:
      Dim rs(36) As Variant
  3. Füge den Workbook_Open()-Code hinzu:

    • Doppelklicke auf „DieseArbeitsmappe“ im Projekt-Explorer und füge den folgenden Code ein:
      Private Sub Workbook_Open()
       Dim x As Integer
       Sheets("Stamm").Activate
       For x = 0 To 20
           rs(x) = Cells(x + 3, 2)
       Next x
       Sheets("Formular").Activate
      End Sub
  4. Füge den Worksheet_Change()-Code hinzu:

    • Doppelklicke auf das Arbeitsblatt „Formular“ und füge diesen Code ein:
      Private Sub Worksheet_Change(ByVal Target As Excel.Range)
       If Not Intersect(Target, Range("C10:C77", "AG10:AG77")) Is Nothing Then
           Dim zelle As String
           zelle = ActiveCell.Address
           Dim x As Integer
           x = ActiveCell.Value
           MsgBox "aktive Zelle: " & zelle & "/" & x & "/" & rs(x)
       End If
      End Sub
  5. Teste den Code:

    • Speichere die Änderungen und teste deine Excel-Datei, indem du eine Zahl in den definierten Bereichen eingibst.

Häufige Fehler und Lösungen

  • Fehler: Sub oder Function nicht definiert:

    • Stelle sicher, dass der Workbook_Open()-Code im richtigen Modul (DieseArbeitsmappe) eingefügt ist.
  • Fehler beim Zugriff auf rs(x):

    • Überprüfe, ob die Variable rs korrekt in einem normalen Modul deklariert wurde.
  • Das Arbeitsblatt "Stamm" wird nicht aktiviert:

    • Achte darauf, dass das Arbeitsblatt mit dem genauen Namen „Stamm“ existiert.

Alternative Methoden

  • Verwendung von Static für Variablen:

    • Du kannst auch Static für Variablen verwenden, um deren Wert zwischen den Prozeduren zu behalten. Beispiel:
      Static rs(36) As Variant
  • Speichern in einer Excel-Tabelle:

    • Anstelle von Variablen könntest du die Daten direkt in einer Excel-Tabelle speichern und bei Bedarf darauf zugreifen.

Praktische Beispiele

Hier ein einfaches Beispiel, wie du dein Array in einem UserForm anzeigen kannst:

Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 0 To 20
        ListBox1.AddItem rs(i)
    Next i
End Sub

Mit diesem Code kannst du die Werte von rs in einer ListBox auf einem UserForm darstellen.


Tipps für Profis

  • Debugging: Nutze den Debugger in Excel VBA, um den Status deiner Variablen während der Ausführung zu überprüfen. Setze Breakpoints, um deine Programmabläufe zu kontrollieren.

  • Code-Kommentare: Kommentiere deinen Code regelmäßig, um die Lesbarkeit und Wartbarkeit zu erhöhen.

  • Benutze Option Explicit: Füge Option Explicit am Anfang deiner Module ein, um sicherzustellen, dass alle Variablen deklariert werden.


FAQ: Häufige Fragen

1. Warum funktioniert mein Worksheet_Change-Ereignis nicht?
Stelle sicher, dass der Code im richtigen Arbeitsblatt-Modul eingefügt ist und dass die richtigen Zellbereiche überwacht werden.

2. Kann ich die Variablen auch anders speichern?
Ja, du kannst die Daten auch in einer Excel-Tabelle speichern oder in einer Datenbank verwalten, je nach Bedarf deiner Anwendung.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige