TKof error BC30451: "TKof" wurde nicht deklariert. Aufgrund der Schutzstufe ist unter Umständen kein Zugriff möglich.

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von amiBD.

    TKof error BC30451: "TKof" wurde nicht deklariert. Aufgrund der Schutzstufe ist unter Umständen kein Zugriff möglich.

    Hallo an alle, :D

    nach tagelanger Suche nach der Lösung für den genannten Fehlercode, seid ihr jetzt gefragt. Nach diesem Fehler wurde auch hier schon 2 mal gefragt. Jedoch wurde ich daraus auch nicht schlauer. Der Sub ist aus einem alten Prog von 2013, welches seit dem auch stabil seinen Dienst tut.
    Nach vielen Jahren muss ich daran wieder mal ein bisschen was aktualisieren. Die Excel Datei die hier verarbeitet wird, kommt von einer externen Quelle. Dort wurde in den Überschriften ein Chr(160) reingeschoben. Somit kann mein String Vergleich nicht funktionieren. Also war meine Idee, über ein Replace diesen Chr(160) rauszunehmen. Leider scheitert es schon bei der Deklarierung der Variable "TKopf". In die soll per

    VB.NET-Quellcode

    1. oSheet.Cells(1, i).value
    nur der Inhalt einer Zelle X eingelesen werden.
    Wie gesagt, hat das seit Jahren funktioniert, nur soll jetzt dieser Chr(160) rausgefiltert werden. Selbst ein deklarieren einer Integer Variable scheitert. Seit Visual Studio 2010 scheint so manches passiert zu sein. ||

    Gruß, Stefan.

    VB.NET-Quellcode

    1. Sub Primas_Report_einlesen()
    2. Dim oXL As Excel.Application
    3. Dim oWB As Excel.Workbook
    4. Dim oSheet As Excel.Worksheet
    5. Dim i, l As Integer
    6. Dim Eqnr, PMnr, Raum, Typbez, kalizy_DS As Integer
    7. Dim TKof As String
    8. If File.Exists(ExcelDatei) Then 'Prüfen Exceldatei existiert
    9. GoTo Weiter
    10. Else 'Abfrage einer anderen Excel Datei, wenn "Primas-Report.xls" nicht gefunden wurde
    11. OpenFileDialog1.InitialDirectory = "G:\QSG\Messraum\PP_Druck\"
    12. OpenFileDialog1.Filter = "Alle Dateien (*,*)|*.*"
    13. OpenFileDialog1.FilterIndex = 1
    14. If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
    15. ExcelDatei = OpenFileDialog1.FileName
    16. Else
    17. Dim prozess As Process = System.Diagnostics.Process.GetCurrentProcess()
    18. prozess.Kill()
    19. End If
    20. End If
    21. Weiter:
    22. Try
    23. oXL = CreateObject("Excel.Application")
    24. oWB = oXL.Workbooks.Open(ExcelDatei)
    25. oSheet = oWB.ActiveSheet
    26. anz = oSheet.UsedRange.Rows.Count
    27. Form4.ProgressBar1.Maximum = anz
    28. Form4.Show()
    29. ReDim Suchwerte(anz, 3)
    30. 'suchen der Spalten nach Suchkriterien
    31. For i = 1 To 25
    32. TKof = oSheet.Cells(1, i).value
    33. If oSheet.Cells(1, i).value = "Equipmentnummer" Then
    34. Eqnr = i
    35. End If
    36. If oSheet.Cells(1, i).value = "Prüfmittelnummer" Then
    37. PMnr = i
    38. End If
    39. If oSheet.Cells(1, i).value = "Raum" Then
    40. Raum = i
    41. End If
    42. If oSheet.Cells(1, i).value = "Typenbezeichnung" Then
    43. Typbez = i
    44. End If
    45. If oSheet.Cells(1, i).value = "Kalibrierzyklus" Then
    46. kalizy_DS = i
    47. End If
    48. Next
    49. '--------------------------------------
    50. For i = 0 To anz
    51. l = i + 1
    52. Suchwerte(i, 0) = oSheet.Cells(l + 1, Eqnr).value
    53. Suchwerte(i, 1) = oSheet.Cells(l + 1, PMnr).value
    54. Suchwerte(i, 2) = oSheet.Cells(l + 1, Raum).value & " " & oSheet.Cells(l + 1, Typbez).value
    55. Suchwerte(i, 3) = Val(Mid(oSheet.Cells(l + 1, kalizy_DS).value, 1, 2))
    56. Form4.Label3.Text = i
    57. Form4.ProgressBar1.Value = i
    58. Next
    59. oXL.Quit()
    60. Form4.Close()
    61. Catch
    62. Form4.Close()
    63. Dim prozess() As Process = Process.GetProcessesByName("Excel")
    64. prozess(0).Kill()
    65. End Try
    66. Call Umwandeln() 'Daten aus Array in "TestoDB.txt" schreiben
    67. MsgBox("Daten wurden aktualisiert")
    68. End Sub


    *Label und BBCode auf .NET geändert*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Bei deinem eigentlichen Problem kann ich dir zwar nicht helfen, aber zwei grundlegende Tipps von mir:

    1.) Verwende kein GoTo (Zeile 10). Das macht den Code unübersichtlich und war selbst in VB6 schon verpönt (wenn auch dort teilweise nötig).

    2.) Die Zeilen 34 bis 49 kann man wunderbar durch ein Select Case austauschen, was für solche Anwendungsfälle gedacht ist.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hallo Marcus,
    vielen Dank für deine Antwort. Das mit dem Case verwende ich heute auch. Das Prog ist aus 2013. Hat super gefunzt. Never touch a ..... ;)

    Das Problem wurde auch in diesem Thread beantwortet. Jedoch kann ich der Anleitung nicht ganz folgen.
    Hast du dazu einen Plan? Ich verwende VS 2019. Dort heißt das alles ein bisschen anders.

    https://www.vb-paradise.de/index.php/Thread/60489-Debugging-spinnt/?postID=472691#post472691

    Dankeschön.

    Gruß, Stefan.