Zellen in VB anzeigen

  • VB.NET

Es gibt 56 Antworten in diesem Thema. Der letzte Beitrag () ist von Marc T..

    Danke, ihr seit echt spitze!

    MrNobody schrieb:

    -> Schau die bei solchen Problemen bei Gelegenheit immer die Properties eines Control's an, und lese dir die Beschreibungen davon durch, das .NET Framework bietet hier einiges an Möglichkeiten von Haus aus ...


    Mache ich!

    Wie kann ich das gut machen? Irgendwo muss ja ein Ausgleich her ;)

    Marc T. schrieb:

    Wie kann ich das gut machen?
    Drauf klicken und F1 drücken, da wird die MSDN geöffnet.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    ErfinderDesRades schrieb:

    Marc T. schrieb:

    Wie kann ich das gut machen?
    noch mehr zur Frage wie debuggen und recherchieren gugge hier: VisualStudio richtig nutzen


    Das Video schaue ich mir jetzt erst mal an.

    Noch ne Sache zu vorhin:

    MrNobody schrieb:

    RodFromGermany schrieb:

    Gib der Form eine entsprechende Property, die Du vor dem ShowWindow()-Befehl mit der betreffenden Instanz belegst.

    Oder auch hier wieder das Exelworksheet im Konstruktor mit übergeben ...

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports OfficeOpenXml
    2. Public Class Form2
    3. Private _CurrentWorksheet As ExcelWorksheet
    4. Public Sub New(currentWorksheet As ExcelWorksheet)
    5. ' Dieser Aufruf ist für den Designer erforderlich.
    6. InitializeComponent()
    7. ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
    8. Me._CurrentWorksheet = currentWorksheet
    9. End Sub
    10. Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
    11. Dim form4 As New Form4(Me._CurrentWorksheet)
    12. form4.Show()
    13. End Sub
    14. End Class



    >>Auch wenn man sich das mit dem Klick auf das Label zweimal überlegen sollte, da ein Label eigentlich nur zum anzeigen gedacht ist! :D <<


    Es kommen zwar keine Fehlermeldungen, aber wenn ich ein Label in der vierten Form mit der Zelle B 2 verknüpfe, dann funktioniert das leider nicht. Wenn ich die exe ausführe, bleibt das Label leer.
    Liegt das daran, dass das "Me._CurrentWorksheet" nicht mit dem Excel Worksheet verknüpft ist?

    Marc T. schrieb:

    nicht mit dem Excel Worksheet verknüpft ist?
    Dann würde da wohl Nothing drinne stehen und es würde sicher iwo knallen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    In dem Label bleibt einfach der Text vom Label stehen, also Label4

    Im Code sehe ich keinen Fehler:
    In dieser Form funktioniert es noch:

    Spoiler anzeigen

    Quellcode

    1. Imports System.IO
    2. Imports OfficeOpenXml
    3. Public Class Kundenübersicht
    4. Private _CurrentWorksheet As ExcelWorksheet = Nothing
    5. Public Sub New(currentWorksheet As ExcelWorksheet)
    6. InitializeComponent()
    7. Me._CurrentWorksheet = currentWorksheet
    8. End Sub
    9. Private Sub Kundenübersicht_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    10. kunde1.Text = CStr(Me._CurrentWorksheet.Cells(1, 2).Value) ' Werte an der Oberfläche anzeigen
    11. straße.Text = CStr(Me._CurrentWorksheet.Cells(2, 2).Value) ' Werte an der Oberfläche anzeigen
    12. datum.Text = Date.Now.ToLongDateString
    13. ort.Text = CStr(Me._CurrentWorksheet.Cells(3, 2).Value)
    14. nummer.Text = CStr(Me._CurrentWorksheet.Cells(4, 2).Value)
    15. schicht.Text = CStr(Me._CurrentWorksheet.Cells(5, 2).Value)
    16. partner.Text = CStr(Me._CurrentWorksheet.Cells(6, 2).Value)
    17. bau.Text = CStr(Me._CurrentWorksheet.Cells(7, 2).Value)
    18. halle.Text = CStr(Me._CurrentWorksheet.Cells(8, 2).Value)
    19. 'usw
    20. End Sub
    21. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    22. Dim Maschinenzustand As New Maschinenzustand(Me._CurrentWorksheet)
    23. If TextBox1.Text = "" Then MsgBox("Bitte gib deinen Namen ein") Else Maschinenzustand.Show()
    24. End Sub
    25. End Class


    Und hier nicht mehr:

    Spoiler anzeigen

    Quellcode

    1. Imports OfficeOpenXml
    2. Public Class Maschinenzustand
    3. Private _CurrentWorksheet As ExcelWorksheet
    4. Public Sub New(currentWorksheet As ExcelWorksheet)
    5. ' Dieser Aufruf ist für den Designer erforderlich.
    6. InitializeComponent()
    7. ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
    8. Me._CurrentWorksheet = currentWorksheet
    9. End Sub
    10.  
    11. Private Sub Maschinenzustand_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    12. Dim pflegezustand() = {"sehr gut", "gut", "ausreichend", "vernachlässigt"}
    13. Allgemeinerpflegezustand1.Items.AddRange(pflegezustand)
    14. Automatisierung2.Items.AddRange(pflegezustand)
    15. automatisierung.Text = CStr(Me._CurrentWorksheet.Cells(2, 2).Value)
    16. End Sub
    17. End Class
    Hast du mal versucht es zu Debuggen -> Dann sieht man relativ schnell ob ein Wert da ist oder nicht

    setzt in "Maschinenzustand" Zeile 15 einen Breakpoint und schau was in currentWorksheet drin steht, wenn es nicht Nothing ist, dann versuche es nochmal bei Zeile 29 usw ....

    Evtl dann noch prüfen ob das Excel-File wirklich an dieser stelle Inhalt hat ...

    Marc T. schrieb:

    Und hier nicht mehr:
    Form_Load, da kann wer weiß was passieren und Du bekommst es nicht mit.
    a) setz einen Haltepunkt da rein und steppe durch,
    b) pack den Code in die Form_Shown.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Marc T. schrieb:

    Was kann ich noch machen?
    Ruf mal zuerst diese Form auf.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Marc T. schrieb:

    Was kann ich noch machen?
    Ruf mal zuerst diese Form auf.


    Welche Form? Die die nicht funktioniert?

    MrNobody schrieb:

    Marc T. schrieb:

    Beim Debugging habe ich bis zum Schluss:

    Tja das sagt uns immerhin schon mal das es das Element vorhanden ist ...

    Poste bitte nochmal den Code von der Form in der nichts angezeigt wird.


    Da ist er:
    Spoiler anzeigen

    Quellcode

    1. Imports System.IO
    2. Imports OfficeOpenXml
    3. Public Class Maschinenzustand
    4. Private _CurrentWorksheet As ExcelWorksheet
    5. Public Sub New(currentWorksheet As ExcelWorksheet)
    6. ' Dieser Aufruf ist für den Designer erforderlich.
    7. InitializeComponent()
    8. ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
    9. Me._CurrentWorksheet = currentWorksheet
    10. End Sub
    11.  
    12.  
    13. Private Sub Maschinenzustand_Shown(sender As Object, e As EventArgs) Handles MyBase.Load
    14. Dim pflegezustand() = {"sehr gut", "gut", "ausreichend", "vernachlässigt"}
    15. Dim türeigenschaften() = {"Ok", "Veriegelungsfahne klemmt", "Türgriff defekt", "Tür klemmt/ hakt"}
    16. Allgemeinerpflegezustand1.Items.AddRange(pflegezustand)
    17. Automatisierung2.Items.AddRange(pflegezustand)
    18. fronttür.Items.AddRange(türeigenschaften)
    19. automatisierung.Text = CStr(Me._CurrentWorksheet.Cells(2, 2).Value)
    20. End Sub
    21. End Class

    Marc T. schrieb:

    Die die nicht funktioniert?
    Ja.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Marc T. schrieb:

    Private Sub Maschinenzustand_Shown(sender As Object, e As EventArgs) Handles MyBase.Load

    Nur den Methoden-Namen zu ändern bedeutet noch nicht das Event (orange markiert ) zu ändern
    -> War glaub nicht ganz das was RodFromGermany dir vorgeschlagen hat :D :D ...

    Marc T. schrieb:

    Ich suche mal
    dort, wo Du auf die Excel-Instanz zugreifst.
    Bei einem nicht modalen Dialog kann das auch im Hauptfenster sein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!