Backgroundworker Excel Zelle auf Nothing prüfen Fehler -SOLVED-

  • VB.NET
  • .NET (FX) 4.5–4.8

    Backgroundworker Excel Zelle auf Nothing prüfen Fehler -SOLVED-

    Hi,

    mit dem Backgrouondworker lese ich eine Excel Tebelle aus. Wenn in eine Zelle leer ist dann soll er einfach diese übersprigen aber stattdessen kommt eine Fehlermeldung

    Eine Ausnahme vom Typ "System.NullReferenceException" ist in preEKFO2017.exe aufgetreten, doch wurde diese im Benutzercode nicht verarbeitet.

    Code

    VB.NET-Quellcode

    1. Private Sub bgw_hl_analyse_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles bgw_hl_analyse.ProgressChanged
    2. Dim int_prozent As Integer = e.ProgressPercentage
    3. Dim Tabelle As String = e.UserState
    4. Dim excel_obj_null_prüfung As String = objExcel.Range(cob_mn_supl_column.Text & int_prozent).value.ToString.Replace(" ", "")
    5. If excel_obj_null_prüfung <> Nothing Then
    6. If excel_obj_null_prüfung <> "999" Then
    7. ' Dim item_no As String = CStr(objExcel.Range("A" & int_prozent).value).Replace(" ", "")
    8. Dim main_suppl As String = CStr(objExcel.Range(cob_mn_supl_column.Text & int_prozent).value)
    9. Dim main_suppl_price As String
    10. Dim main_suppl_price_RGB() As String
    11. For i = 0 To ary_column.Length - 1
    12. If objExcel.Range(ary_column(i).ToString & cob_supl_row.Text).value <> Nothing Then
    13. If objExcel.Range(ary_column(i).ToString & cob_supl_row.Text).value.ToString.Replace(" ", "") = main_suppl.Replace(" ", "") Then
    14. main_suppl_price = objExcel.Range(ary_column(i).ToString & int_prozent).value
    15. main_suppl_price_RGB = RGBWerte(objExcel.range(ary_column(i).ToString & int_prozent)).ToString.Split(";")
    16. Dim str_transformiert As String = objExcel.range("A" & int_prozent).value.ToString.Replace(" ", "") & ";" & main_suppl & ";" & main_suppl_price & ";" & main_suppl_price_RGB(0) & ";" & main_suppl_price_RGB(1) & ";" & main_suppl_price_RGB(2)
    17. ListBox1.Items.Add(str_transformiert)
    18. txt_transformed.Text = "Transformierte Zeilen: " & ListBox1.Items.Count
    19. ListBox1.SelectedIndex = ListBox1.Items.Count - 1
    20. Exit For
    21. Else
    22. If i = ary_column.Length - 1 Then
    23. int_fehler += 1
    24. Label3.Text = "Fehler: " & int_fehler
    25. 'Exit For
    26. End If
    27. End If
    28. End If
    29. Next
    30. Else
    31. If objExcel.Range(cob_mn_supl_column.Text & int_prozent).value.ToString.Replace(" ", "") = "999" Then
    32. int_lösch += 1
    33. txt_löschartikel.Text = "Löschartikel: " & int_lösch
    34. End If
    35. End If
    36. End If
    37. End Sub


    Bei

    VB.NET-Quellcode

    1. Dim excel_obj_null_prüfung As String = objExcel.Range(cob_mn_supl_column.Text & int_prozent).value.ToString.Replace(" ", "")


    wird der Fehler ausgelöst

    Ich versteh diesen Fehler nicht. Ich prüfe doch mit dem Code ob dieser Nothing ist und wenn dies True ist soll er einfach diese Zelle überspringen

    Kann mit einer bitte helfen, Google gibt mir leider keine Lösung ?(


    Sorry - 2 Sekunden länger nachgedacht und Lösung gefunden.
    Ich habe das Objekt vor der Prüfung mit ".Replace(" ","")" bearbeitet obwohl es Nothing war, daher der Fehler.
    Für alle die es Interessiert nachfolgend der korrigierte Code

    VB.NET-Quellcode

    1. Private Sub bgw_hl_analyse_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles bgw_hl_analyse.ProgressChanged
    2. Dim int_prozent As Integer = e.ProgressPercentage
    3. Dim Tabelle As String = e.UserState
    4. ' Dim excel_obj_null_prüfung As String = objExcel.Range(cob_mn_supl_column.Text & int_prozent).value.ToString.Replace(" ", "")
    5. If objExcel.Range(cob_mn_supl_column.Text & int_prozent).value <> Nothing Then
    6. If objExcel.Range(cob_mn_supl_column.Text & int_prozent).value.ToString.Replace(" ", "") <> "999" Then
    7. ' Dim item_no As String = CStr(objExcel.Range("A" & int_prozent).value).Replace(" ", "")
    8. Dim main_suppl As String = CStr(objExcel.Range(cob_mn_supl_column.Text & int_prozent).value)
    9. Dim main_suppl_price As String
    10. Dim main_suppl_price_RGB() As String
    11. For i = 0 To ary_column.Length - 1
    12. If objExcel.Range(ary_column(i).ToString & cob_supl_row.Text).value <> Nothing Then
    13. If objExcel.Range(ary_column(i).ToString & cob_supl_row.Text).value.ToString.Replace(" ", "") = main_suppl.Replace(" ", "") Then
    14. main_suppl_price = objExcel.Range(ary_column(i).ToString & int_prozent).value
    15. main_suppl_price_RGB = RGBWerte(objExcel.range(ary_column(i).ToString & int_prozent)).ToString.Split(";")
    16. Dim str_transformiert As String = objExcel.range("A" & int_prozent).value.ToString.Replace(" ", "") & ";" & main_suppl & ";" & main_suppl_price & ";" & main_suppl_price_RGB(0) & ";" & main_suppl_price_RGB(1) & ";" & main_suppl_price_RGB(2)
    17. ListBox1.Items.Add(str_transformiert)
    18. txt_transformed.Text = "Transformierte Zeilen: " & ListBox1.Items.Count
    19. ListBox1.SelectedIndex = ListBox1.Items.Count - 1
    20. Exit For
    21. Else
    22. If i = ary_column.Length - 1 Then
    23. int_fehler += 1
    24. Label3.Text = "Fehler: " & int_fehler
    25. 'Exit For
    26. End If
    27. End If
    28. End If
    29. Next
    30. Else
    31. If objExcel.Range(cob_mn_supl_column.Text & int_prozent).value.ToString.Replace(" ", "") = "999" Then
    32. int_lösch += 1
    33. txt_löschartikel.Text = "Löschartikel: " & int_lösch
    34. End If
    35. End If
    36. End If
    37. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „AbsolutCF“ ()