Sub übergreifende variabeln

Sub BUTTONEINS()
Dim z As Integer
Dim sp As Integer

AUSLESEN
LEEREZEILEFINDEN 
RAHMEN
SPEICHERN 
LEEREN 

End Sub

Modul1:

Sub AUSLESEN() = Liest daten aus einer liste
Sub LEEREZEILEFINDEN() = Leerzeile finden
Sub RAHMEN() = erstellt einen Rahmen um den feldern
Sub SPEICHERN() = Speichert alle daten
Sub LEEREN() = Leert alle felder und Checkboxen und Optionsboxen

Also mein problem ist das die Sub LEEREZEILEFINDEN()eine leere Zeile finde und mir dann die zahl als variable wieder gibt. also so zu sagen die Position nur ohne Spalten angabe. das klappt eigentlich auch aber ich schaffe es nicht das die Variable Sub übergreifent ist.
weil alle anderen sub finden nichts von der Variabel.

Wie kann ich es machen das die zahl die in Sub LEEREZEILEFINDEN() ermittelt wird dann von den andern subs weiter benutzt werden kann. leider funktioniert es nicht mit public.

wäre cool wenn mir einer helfen kann :smiley:

vielen dank schon mal

Gruß
Leo

Wie kann ich es machen das die zahl die in Sub
LEEREZEILEFINDEN() ermittelt wird dann von den andern subs
weiter benutzt werden kann. leider funktioniert es nicht mit
public.

hallo Dark,

wieso funktioniert es mit public nicht?

Zeige mal den ganzen Code.

Gruß
Reinhard

Wie kann ich es machen das die zahl die in Sub
LEEREZEILEFINDEN() ermittelt wird dann von den andern subs
weiter benutzt werden kann. leider funktioniert es nicht mit
public.

Hallo Leo

Ich glaube, die Anweisung Static ist das, was Du suchst.
Im Office-Forum z. B. findest Du Hinweise dazu:
http://www.office-loesung.de/ftopic255138_0_0_asc.php

Grüsse Niclaus

Sub BUTTONEINS()
Dim z As Integer
AUSLESEN 
LEEREZEILEFINDEN
SPEICHERN 
LEEREN 'da wird alles im Sheets("Bearbeitung") gelöscht das klappt auch
End Sub

Sub AUSLESEN()
namem = Sheets("Bearbeitung").Cells(12, 2) ' Name einlesen
vorname = Sheets("Bearbeitung").Cells(12, 5) ' Vorname einlesen
handynr = Sheets("Bearbeitung").Cells(21, 2) ' Handy Nr einlesen
End Sub

Sub LEEREZEILEFINDEN() 
Dim z As Integer
Do While Sheets("Stammdaten").Cells(z, 1) "" 
z = z + 1 
Loop 
End Sub

Sub SPEICHERN()
Dim z As Integer
Sheets("Stammdaten").Cells(z, 3) = namem ' Name schreiben
Sheets("Stammdaten").Cells(z, 4) = vorname ' Vorname schreiben
Sheets("Stammdaten").Cells(z, 8) = handynr ' Handy Nr schreiben
End Sub

Wenn ich public eintrage sagt er mir:
Ungültiges Attribut in Sub oder Function

wenn ich dann auf hilfe drück sagt er mir:

Ungültiges Attribut in Sub, Function oder Property


Einige Attribute sind in Prozeduren unzulässig. Für diesen Fehler gibt es die folgende Ursache und Lösung: 

Das Attribut Public oder Private befindet sich im Rumpf einer Prozedurdefinition. 
Entfernen Sie das Attribut aus der Prozedur. Die Variable erhält einen größeren Gültigkeitsbereich, wenn Sie die Deklaration auf die Modulebene verschieben. Variablen, die in Prozeduren deklariert werden, sind immer Private. 

Die Fehler meldung die ich bekomm ist leider nur:

Anwendungs- oder Objektdefinierte fehler

und er springt mit dem gelben balken auf

Sheets("Stammdaten").Cells(z, 3) = namem 

Wäre cool wenn mir einer helfen kann.

mit großem dank
Leo

Hallo Leo,

Einige Attribute sind in Prozeduren unzulässig. Für diesen
Fehler gibt es die folgende Ursache und Lösung:

Das Attribut Public oder Private befindet sich im Rumpf einer
Prozedurdefinition.

das erklärts doch.

Die Fehler meldung die ich bekomm ist leider nur:

Anwendungs- oder Objektdefinierte fehler

und er springt mit dem gelben balken auf

Sheets(„Stammdaten“).Cells(z, 3) = namem

Möglich daß z zu dem Zeitpunkt 0 ist.

Option Explicit
Public Namen, Vorname, Handynr, Z As Integer
'
Sub BUTTONEINS()
AUSLESEN
LEEREZEILEFINDEN
SPEICHERN
'LEEREN 'da wird alles im Sheets("Bearbeitung") gelöscht das klappt auch
End Sub
'
Sub AUSLESEN()
Namen = Sheets("Bearbeitung").Cells(12, 2) ' Name einlesen
Vorname = Sheets("Bearbeitung").Cells(12, 5) ' Vorname einlesen
Handynr = Sheets("Bearbeitung").Cells(21, 2) ' Handy Nr einlesen
End Sub
'
Sub LEEREZEILEFINDEN()
Z = 1
Do While Sheets("Stammdaten").Cells(Z, 1) ""
 Z = Z + 1
Loop
End Sub
'
Sub SPEICHERN()
Z = Z + 1
Sheets("Stammdaten").Cells(Z, 3) = Namen ' Name schreiben
Sheets("Stammdaten").Cells(Z, 4) = Vorname ' Vorname schreiben
Sheets("Stammdaten").Cells(Z, 8) = Handynr ' Handy Nr schreiben
End Sub

Gruß
Reinhard

1 „Gefällt mir“

Ja super genau das war was ich suchte du bist genial dank :smiley:

vielen dank

Leo