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:
1009
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

 

 

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