letzte beschriebene Zelle in Excel-Spalte finden und auslesen mit Visual Basic Express 2010

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von JME1lo.

    letzte beschriebene Zelle in Excel-Spalte finden und auslesen mit Visual Basic Express 2010

    Hallo,

    ich bin relativ neu in diesem Thema, habe hier schon einige Sachen gefunden die mir bei anderen Problemen weiter geholfen haben, nun habe ich aber doch mal eine Frage.

    Ich hatte mein Programm mit VBA fertig, aber dann festgestellt dass ich daraus keine *.exe Datei erzeugen kann.

    Nun Programmiere ich das ganze in Visual Basic 2010 Express neu.


    Folgendes Problem habe ich im Moment:

    Ich möchte in der Exceldatei die ich über das Programm aufgerufen habe die letzte beschriebene Zeile auslesen, diese mit besteht aus einem Buchstaben und 4 Zahlen,
    und dann in die nächste Zeile wieder den Buchstaben haben, aber die Zahl soll um 1 erhöht werden.
    Also hätte ich gerne die Zeilenzahl der letzten Zeile in einer Variable, die ich dann wenn ich mehrere neue Nummern anlegen will in einer Schleife laufen lassen kann und immer hochzählen lasse.

    Hat hier vielleicht jemand einen Lösungsvorschlag?

    Besten Dank!
    Gruß Martin
    Was genau willst du machen?


    VB.NET-Quellcode

    1. Dim Zeile_Count As Long = MyExcel.Sheets("Kopfdaten").UsedRange.Rows.Count

    VB.NET-Quellcode

    1. Dim Spalten_count As Long = MyExcel.Sheets("Tabelle1").UsedRange.Columns.Count

    VB.NET-Quellcode

    1. Dim test as String = MyExcel.Cells(Zeile_Count, Spalten_count ).Text



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

    Willkommen im Forum. :thumbup:
    @JME1lo Ändere mal den Titel dieses Deines Threads und nimm das Wort Excel 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!
    Die letzte Zelle bekommst du mit
    Excel.Sheets(1).Cells.SpecialCells(11)
    Die 11 steht für die Konstante xlCellTypeLastCell

    Die letzte in Spalte A:A gefüllte Zeile:
    ​Excel.Sheets(1).Cells(Excel.Rows.Count, 1).End(-4162).Row
    -4162 steht für die Konstante xlUp
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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

    Ich hab das Problem mit etwas probieren jetzt gelöst. Aber trotzdem vielen Dank!

    Code:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Banlegen.Click
    Dim Anzahl As String
    Anzahl = Tanzahl.Text

    If Anzahl = "" Then
    MessageBox.Show("Bitte Anzahl eingeben", "Fehler", MessageBoxButtons.OK)
    GoTo Line1000
    End If

    If Anzahl > 1 Then
    Label4.Text = "Neue Nummern:"
    Else
    Label4.Text = "Neue Nummer:"
    End If

    Dim excel As Object = CreateObject("Excel.application")
    Dim Zeilenanzahl As String = 0

    excel.visible = False

    excel.application.workbooks.open("\\Pfad..................\Mappe1.xls")

    excel.application.sheets(3).Select() REM
    Zeilenanzahl = excel.Sheets(3).Cells(excel.Rows.Count, 2).End(-4162).Row


    Dim x As Integer

    x = Zeilenanzahl

    Dim neue As Integer
    Dim i As Integer = 0
    Dim letzte As String

    letzte = excel.range("B" & x).value
    letzte = Mid$(letzte, 2, 10)

    neue = letzte + 1

    Dim Benutzername As String = My.User.Name.ToString

    Do Until i = Anzahl

    x = x + 1

    If i = 0 Then
    TextBox3.Text = "Z" & neue
    excel.range("B" & x).value = TextBox3.Text
    excel.range("C" & x).value = TextBox1.Text
    excel.range("D" & x).value = TextBox2.Text
    excel.range("E" & x).value = Benutzername
    excel.range("F" & x).value = System.DateTime.Now.ToString()

    ElseIf i = 1 Then
    neue = neue + 1
    TextBox4.Text = "Z" & neue
    excel.range("B" & x).value = TextBox4.Text
    excel.range("C" & x).value = TextBox1.Text
    excel.range("D" & x).value = TextBox2.Text
    excel.range("E" & x).value = Benutzername
    excel.range("F" & x).value = System.DateTime.Now.ToString()

    ElseIf i = 2 Then
    neue = neue + 1
    TextBox5.Text = "Z" & neue
    excel.range("B" & x).value = TextBox5.Text
    excel.range("C" & x).value = TextBox1.Text
    excel.range("D" & x).value = TextBox2.Text
    excel.range("E" & x).value = Benutzername
    excel.range("F" & x).value = System.DateTime.Now.ToString()

    ElseIf i = 3 Then
    neue = neue + 1
    TextBox6.Text = "Z" & neue
    excel.range("B" & x).value = TextBox6.Text
    excel.range("C" & x).value = TextBox1.Text
    excel.range("D" & x).value = TextBox2.Text
    excel.range("E" & x).value = Benutzername
    excel.range("F" & x).value = System.DateTime.Now.ToString()

    ElseIf i = 4 Then
    neue = neue + 1
    TextBox7.Text = "Z" & neue
    excel.range("B" & x).value = TextBox7.Text
    excel.range("C" & x).value = TextBox1.Text
    excel.range("D" & x).value = TextBox2.Text
    excel.range("E" & x).value = Benutzername
    excel.range("F" & x).value = System.DateTime.Now.ToString()
    ElseIf i = 5 Then
    neue = neue + 1
    TextBox8.Text = "Z" & neue
    excel.range("B" & x).value = TextBox8.Text
    excel.range("C" & x).value = TextBox1.Text
    excel.range("D" & x).value = TextBox2.Text
    excel.range("E" & x).value = Benutzername
    excel.range("F" & x).value = System.DateTime.Now.ToString()
    ElseIf i = 6 Then
    neue = neue + 1
    TextBox9.Text = "Z" & neue
    excel.range("B" & x).value = TextBox9.Text
    excel.range("C" & x).value = TextBox1.Text
    excel.range("D" & x).value = TextBox2.Text
    excel.range("E" & x).value = Benutzername
    excel.range("F" & x).value = System.DateTime.Now.ToString()
    ElseIf i = 7 Then
    neue = neue + 1
    TextBox10.Text = "Z" & neue
    excel.range("B" & x).value = TextBox10.Text
    excel.range("C" & x).value = TextBox1.Text
    excel.range("D" & x).value = TextBox2.Text
    excel.range("E" & x).value = Benutzername
    excel.range("F" & x).value = System.DateTime.Now.ToString()
    ElseIf i = 8 Then
    neue = neue + 1
    TextBox11.Text = "Z" & neue
    excel.range("B" & x).value = TextBox11.Text
    excel.range("C" & x).value = TextBox1.Text
    excel.range("D" & x).value = TextBox2.Text
    excel.range("E" & x).value = Benutzername
    excel.range("F" & x).value = System.DateTime.Now.ToString()
    ElseIf i = 9 Then
    neue = neue + 1
    TextBox12.Text = "Z" & neue
    excel.range("B" & x).value = TextBox12.Text
    excel.range("C" & x).value = TextBox1.Text
    excel.range("D" & x).value = TextBox2.Text
    excel.range("E" & x).value = Benutzername
    excel.range("F" & x).value = System.DateTime.Now.ToString()

    End If

    i = i + 1

    Loop

    For Each w In excel.Application.Workbooks
    w.Save()
    Next w
    excel.application.workbooks.Close()

    Line1000:

    End Sub

    End Class
    Problem ist jetzt noch, im Moment speichert das ganze automatisch nach dem anlegen der neuen Nummern.

    Überlege die ganze Zeit wie man das elegant mit einem Abbrechen Button abbrechen könnte, und mit einem Speichern/Schließen Butten beenden und speichern kann..