Thema Datum  Von Nutzer Rating
Antwort
Rot Public Variable ist nicht in allen Funktionen verfügbar
29.01.2018 15:09:17 Piecha
NotSolved
29.01.2018 17:13:15 Gast61122
NotSolved
29.01.2018 19:35:13 xlKing
NotSolved
29.01.2018 22:45:51 xlKing
NotSolved
30.01.2018 15:52:21 Piecha
NotSolved
01.02.2018 12:48:44 xlKing
NotSolved

Ansicht des Beitrags:
Von:
Piecha
Datum:
29.01.2018 15:09:17
Views:
1268
Rating: Antwort:
  Ja
Thema:
Public Variable ist nicht in allen Funktionen verfügbar

Hallo,

Ich verzweifele gerade. In meinem Programm habe ich Variablen als Public deklariert um Sie von Funktionen und Formularen lesen und Schreiben zu können. Nun habe ich von einer Funktion zur nächsten keinen Zugriff mehr. was läuft falsch?

Als Beispiel wird mir im Überwachungsfenster die Variable HerstellerStr, im Kontext einmal als "Global" und ein zweites mal als ". HerstellerNichtGefunfunden" angezeigt

Zusätzlich gibt es noch Formulare, in denen die Variablen auch benutzt werden.

 

Danke

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
Option Explicit
Public AnzahlZeilenImport As Long
Public AnzahlZeilenExport As Long
Public AnzahlHersteller As Integer
Public CounterImport As Long
Public CounterExport As Long
Public CounterHersteller As Integer
Public TempImportString As String
Public TempExportString As String
Public SuchPos As Integer
Public Hersteller() As String
Public HerstellerStr As String
Public HerstellerNeuStr As String
Public PartNrStr As String
Public PartNrAStr As String
Public PartNrBStr As String
Public BezeichnungStr As String
Public BezeichnungVorStr As String
 
Public AbbruchTaste As Boolean
Public StartBearbeitung As Long
 
Const HerstellerStart = 4
Const HerstellerSpalte = "G"
Const PartNrSpalte = "F"
Const BezeichnungSpalte = "E"
Const AbbruchString = "##"
Const RohDatenSpalte = "H"
 
Public Sub Import_SMA_Variante_1()
    HerstellerStr = "Hersteller"
    VariablenEinlesen
    Sheets("Export").Select
    Sheets("Export").Columns("A:A").ColumnWidth = 18
    If Sheets("Export").Range("E1").Text = "Bezeichnung" Then
    Else
        Sheets("Export").Columns("E:E").Insert Shift:=xlToRight
        Sheets("Export").Range("E1") = "Bezeichnung"
    End If
      
    SMA_Import.Show
     
    Sheets("Export").Select
    Range("C2").Select
    ActiveWindow.FreezePanes = True
End Sub
Public Function VariablenEinlesen()
    AnzahlZeilenImport = WorksheetFunction.CountA(Sheets("Import").Range("A:A"))
    AbbruchTaste = False
    StartBearbeitung = 2
    AnzahlZeilenExport = WorksheetFunction.CountA(Sheets("Export").Range("A:A"))
    CounterExport = WorksheetFunction.CountA(Sheets("Export").Range("A:A"))
    If CounterExport >= 1 Then SMA_Import.Import1Erl = True
End Function
Public Function DatenImportierenKnopf()
    If SMA_Import.Import1Erl Then
        If MsgBox("Es sind schon Daten vorhanden. Diese überschreiben?", vbYesNo) = vbYes Then
            DatenImportieren
            SortierungEintragen
        End If
    Else
        DatenImportieren
        SortierungEintragen
    End If
    SMA_Import.Import1Erl = True
End Function
Public Function DatenSelektierenKnopf()
    AnzahlHersteller = HerstellerEinlesen
    StartBearbeitung = InputBox("Bitte Startzeile eingeben " & vbCrLf, "Startzeile", StartBearbeitung)
    If StartBearbeitung < 2 Then StartBearbeitung = 2
    For CounterImport = StartBearbeitung To AnzahlZeilenExport        '########## Zeilenbearbeitun starten ##################
     
        TempImportString = Sheets("Export").Range(RohDatenSpalte & CounterImport)          ' Text holen
         
        Application.ScreenUpdating = True                                       ' Zu bearbeitende Zeil in Focus
        Application.Goto Range("A" & CounterImport - 1), True
        Rows(CounterImport).Select
         
        HerstellerSuchen
        PartNrSelektieren
    If AbbruchTaste Then GoTo AbbruchHerstellerSuchen
    Next                                                              '########## Zeilenbearbeitun ende #####################
AbbruchHerstellerSuchen:
End Function
 
Public Function DatenImportieren()
    Sheets("Export").UsedRange.ClearContents
    Sheets("Export").Rows(1).Value = Sheets("Import").Rows(1).Value
    AnzahlZeilenExport = 2
    CounterExport = 2
    For CounterImport = 2 To AnzahlZeilenImport
     
        TempImportString = Sheets("Import").Range("F" & CounterImport).Value
        SuchPos = InStr(1, TempImportString, " oder ", 1)
         
        If SuchPos = 0 Then
            Sheets("Export").Rows(CounterExport).Value = Sheets("Import").Rows(CounterImport).Value
        Else
            Sheets("Export").Rows(CounterExport).Value = Sheets("Import").Rows(CounterImport).Value
            Sheets("Export").Range("F" & CounterExport).Value = Left(TempImportString, SuchPos)
             
            Do While SuchPos > 0
                CounterExport = CounterExport + 1
                Sheets("Export").Rows(CounterExport).Value = Sheets("Import").Rows(CounterImport).Value
                TempImportString = Right(TempImportString, Len(TempImportString) - SuchPos)
                SuchPos = InStr(2, TempImportString, "oder", 1) - 1
                If SuchPos > 0 Then
                    Sheets("Export").Range("F" & CounterExport).Value = Left(TempImportString, SuchPos)
                Else
                    Sheets("Export").Range("F" & CounterExport).Value = TempImportString
                End If
            Loop
 
        End If
        CounterExport = CounterExport + 1
    Next
    Sheets("Export").Columns("A:A").Insert Shift:=xlToRight
End Function
Public Function SortierungEintragen()
    Sheets("Export").Range("A1").Value = "Sortierung"
    AnzahlZeilenExport = CounterExport
    For CounterExport = 2 To AnzahlZeilenExport
        Sheets("Export").Range("A" & CounterExport).Value = CounterExport - 1
    Next
    Sheets("Export").Select
    Sheets("Export").Columns("A:A").HorizontalAlignment = xlCenter
    Sheets("Export").Columns("A:A").ColumnWidth = 18
    Sheets("Export").Columns("F:G").EntireColumn.AutoFit
    Sheets("Export").Columns("F:G").HorizontalAlignment = xlLeft
End Function
Public Function HerstellerSuchen()
    SuchPos = 0
    CounterHersteller = 0
    Do
        CounterHersteller = CounterHersteller + 1
        SuchPos = InStr(1, TempImportString, Hersteller(CounterHersteller), 1)  ' Hersteller suchen
    Loop Until SuchPos > 1 Or CounterHersteller > AnzahlHersteller              ' Position ermitteln
    If SuchPos > 0 And Len(Hersteller(CounterHersteller)) > 0 Then              ' Hersteller gefunden                                      '
        Sheets("Export").Range(HerstellerSpalte & CounterImport) = Hersteller(CounterHersteller)
    Else
        HerstellerNichtGefunden
        CounterHersteller = CounterHersteller - 1
        Sheets("Export").Range(HerstellerSpalte & CounterImport) = HerstellerStr
                SuchPos = InStr(1, TempImportString, Hersteller(CounterHersteller), 1)
    End If
End Function
Public Function HerstellerNichtGefunden()
    CounterHersteller = WorksheetFunction.CountA(Sheets("Start").Range("A:A"))
    HerstellerStr = InputBox("Der Hersteller kann nicht gefunden werden. Bitte löschen Sie alle unnötigen Zeichen", "Erstellung eines neuen Herstellers  - Abbruich mit ##", TempImportString)
    If HerstellerStr = AbbruchString Then
        AbbruchTaste = True
    Else
        Hersteller(AnzahlHersteller) = HerstellerStr
        AnzahlHersteller = AnzahlHersteller + 1
        ReDim Preserve Hersteller(1 To AnzahlHersteller + 1)
        Sheets("Start").Range("A" & CounterHersteller + HerstellerStart) = Trim(HerstellerStr)
    End If
    AnzahlHersteller = HerstellerEinlesen
End Function
 
Public Function PartNrSelektieren()
    If SuchPos <= 0 Then SuchPos = 1
    If Sheets("Export").Range(PartNrSpalte & CounterImport) = "" Then
        PartNrStr = Left(TempImportString, SuchPos - 1)
    Else
        PartNrStr = Sheets("Export").Range(PartNrSpalte & CounterImport)
    End If
    If Sheets("Export").Range(BezeichnungSpalte & CounterImport) = "" Then
        BezeichnungStr = Right(TempImportString, (Len(TempImportString) - (Len((Hersteller(CounterHersteller))) + SuchPos - 1)))
    Else
        BezeichnungStr = Sheets("Export").Range(BezeichnungSpalte & CounterImport)
    End If
    If CounterImport <= 2 Then
        BezeichnungVorStr = ""
    Else
        BezeichnungVorStr = Sheets("Export").Range(BezeichnungSpalte & CounterImport - 1)
    End If
    DatenSelektierenBox
    If AbbruchTaste Then
    Else
        Sheets("Export").Range(HerstellerSpalte & CounterHersteller + HerstellerStart) = HerstellerNeuStr
        If HerstellerNeuStr = HerstellerStr Then
        Else
            AnzahlHersteller = AnzahlHersteller + 1
            ReDim Preserve Hersteller(1 To AnzahlHersteller + 1)
            Sheets("Start").Range("A" & CounterHersteller + HerstellerStart) = Trim(HerstellerStr)
            AnzahlHersteller = HerstellerEinlesen
        End If
        Sheets("Export").Range(PartNrSpalte & CounterImport) = PartNrStr
        Sheets("Export").Range(BezeichnungSpalte & CounterImport) = BezeichnungStr
    End If
 
End Function
Public Function DatenSelektierenBox()
    DatenSelektieren.Rohdaten = Trim(TempImportString)
    DatenSelektieren.ErkannterHersteller = Trim(Hersteller(CounterHersteller))
    DatenSelektieren.ErkanntePartNr = Trim(PartNrStr)
    DatenSelektieren.ErkannteBezeichnung = Trim(BezeichnungStr)
    DatenSelektieren.BezeichnungLetzterEintrag = BezeichnungVorStr
    DatenSelektieren.Show
End Function
Public Function HerstellerEinlesen()
    AnzahlHersteller = WorksheetFunction.CountA(Sheets("Start").Range("A:A"))
    ActiveWorkbook.Worksheets("Start").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Start").AutoFilter.Sort.SortFields.Add Key:=Range("A4:A" & AnzahlHersteller + 10), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Start").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ReDim Preserve Hersteller(1 To AnzahlHersteller + 1)                        ' Hersteller Array an AnzahlHersteller anpassen
    For CounterHersteller = 1 To AnzahlHersteller                               ' Hersteller in Array laden
        Hersteller(CounterHersteller) = Sheets("Start").Range("A" & CounterHersteller + 4)
    Next
    HerstellerEinlesen = AnzahlHersteller
End Function ' Müll zum Löschen

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Public Variable ist nicht in allen Funktionen verfügbar
29.01.2018 15:09:17 Piecha
NotSolved
29.01.2018 17:13:15 Gast61122
NotSolved
29.01.2018 19:35:13 xlKing
NotSolved
29.01.2018 22:45:51 xlKing
NotSolved
30.01.2018 15:52:21 Piecha
NotSolved
01.02.2018 12:48:44 xlKing
NotSolved