Office: Value in Zelle schreiben

Helfe beim Thema Value in Zelle schreiben in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Ich habe eine UserForm gezeichnet, welche auch einige Textfelder beinhaltet. Die Daten, welche in die Textfelder geschrieben werden, sollen in... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Iluminati, 25. September 2008.

  1. Value in Zelle schreiben


    Ich habe eine UserForm gezeichnet, welche auch einige Textfelder beinhaltet. Die Daten, welche in die Textfelder geschrieben werden, sollen in bestimmte Zellen übertragen werden. Wie ginge das?
    Ich bin VBA-Neuling. Ich habe zwar das EXCEL Kompendium von Bernd Held neben mir liegen, in welchem auch ein ähnliches Beispiel enthalten ist. Nur ist das nicht genau mein Fall und ich bin, wie schon erwähnt, noch VBA-Neuling und habe etwas Probleme mit der Anpassung.

    Vor dem Datenübertrag soll die Zeile mit dem letzten Eintrag gesucht werden. Der Value soll dann in die nächste leere Zeile eingetragen werden. Muss die Zeilensuche für jedes Textfeld definiert werden oder reicht das einmal?

    :)
     
    Iluminati, 25. September 2008
    #1
  2. Hallo Iluminati,

    wenn Du noch einen Button auf Deiner Userform hast, könntest Du -exemplarisch für 2 Textboxen - dieses Makro dhinter legen:

    Code:
    Grüße
    EarlFred
     
  3. Die Daten sollen ja in die nächste leere Zeile eingen werden. Worin besteht der Unterschied dieser Befehle?
    1. ActiveSheet.UsedRange.Rows.Count
    2. Sheets(intZ).UsedRange.Rows.Count
    3. Application.WorksheetFunction.CountA(Sheets(strTabelle).Colums("A:A))
    4. lnglz = .Cells(Rows.Count, 1).End(xlUp).Row
    5. ing = Range(A65536").End(xlUp).Offset(1,0).Row
    6. .UsedRange.Rows.Count + 1


    @ EarlFRed
    Was meinst Du mit Button. Eine Befehlsschaltfläche?
     
    Iluminati, 27. September 2008
    #3
  4. Value in Zelle schreiben

    Hallo,

    1. ActiveSheet ist das gerade sichtbare Blatt. Das kann a natürlich ein falsches sein und b ein Diagrammblatt. Zu unsicher !!!

    2. UsedRange ist nur dann sicher, wenn die Zelle A1 nicht unbenutzt ist. Ansonsten musst du mit UsedRange.Row + UsedRange.Rows.Count die Position berechnen. Zu umständlich !!!

    3. Application.WorksheetFunction.CountA setzt voraus, dass alle Zeilen nicht leer sind. Zu unsicher !!!

    4. .Cells(Rows.Count, 1).End(xlUp).Row ist die schnellste und sicherste Methode. Allerdings ist da ein Fehler drin, denn der Bezug von Rows zur Tabelle fehlt.

    5. Ist praktisch identisch mit Punkt 4

    6. Siehe Bemerkung zu Punkt 2

    Mal ein Beispiel wie du das richtig machst:

    Private Sub CommandButton1_Click()
    With Tabelle1 ' absoluter Bezug zu definierter Tabelle
    With .Cells(.Rows.Count, 1).End(xlUp).Offset(1) ' Bezug zur 1. freien Zeile in Spalte A
    .Value = TextBox1.Text ' Wertübergabe an Zelle in Spalte A
    .Offset(, 1).Value = TextBox2.Text ' Wertübergabe an Zelle in Spalte B
    End With
    End With
    End Sub
     
  5. Wieso unterscheidet sich der Code der Wertübergabe an Zelle in Spalte A und Spalte B? Ich frage das, da meine UserForm 21 Textfelder (Eingabefelder) aufweist.
     
    Iluminati, 27. September 2008
    #5
  6. Hi,

    na weil ja schon ein Verweis auf die Zelle in Spalte A besteht. Darum wird nur die Value-Eigenschaft angesprochen. Um die Value-Eigenschaft der Zelle in Spalte B ansprechen zu können muss ein Offset um eine Spalte nach rechts gemacht werden. Um die Zelle in Spalte C anzusprecen muss dann einfach ein Offset um zwei Spalten nach rechts gemacht werden. Damit ist es möglich das ganze in einer Schleife laufen zu lassen. Beispiel:

    Private Sub CommandButton1_Click()
    Dim lngIndex As Long
    With Tabelle1
    With .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
    For lngIndex = 1 To 21
    .Offset(, lngIndex - 1).Value = _
    Controls("TextBox" & CStr(lngIndex)).Text
    Next
    End With
    End With
    End Sub
     
  7. Unabhängig davon, wie nun der Code für die Funktion auszusehen hat, habe ich mit der ganzen Sache ein Verständnisproblem. Ich denke allerdings, dass das mit der UserForm zusammen hängt. Nachfolgend versuche ich einmal, mein Verständnisproblem zu schildern.


    Als Beispiel nehme ich HTML. Die HTML Code-Struktur sieht bekanntlich so aus.

    HTML:
    Doctype-Deklaration
    
    
    
    Im Kopfteil stehen Daten wie Metatags, Titel der Webseite oder ein Verweis auf eine Stylesheet Datei.
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Worauf ich hinaus möchte, ist, dass die gesammte Codestruktur auf einmal zu sehen ist. Selbst, wenn man jetzt keine große Ahnung von HTML hat, kann man zumindest mit etwas Hilfe den logischen Aufbau des Codes erkennen und vielleicht verstehen, wie was programmiert wurde.


    Wenn ich in Excel in die Entwicklungsumgebung wechsle und den Code anzeigen lasse, sieht das so aus.

    Code:
    Am Ende steht die TextBox1 (von 21). Nun sollen ja die Daten, welche in die Textboxen eingetragen werden, in eine Tabelle geschrieben werden. Der Code, mit welchem die letzte befüllte Zeile gesucht wird, soll doch aber für alle 21 Textboxen gelten. Also quasi in etwa so.

    Code:
    Ist es möglich, die Art der Anzeige zu ändern (also, dass ich alles auf einmal sehe), damit ich den Code vom logischen Aufbau her, wie er in meinem Kopf ist, in die Entwicklungsumgebung bekomme? Ansonsten tue ich mich mit der Verknüpfung von With .Cells(.Rows.Count, 1).End(xlUp).Offset(1) mit jeder einzelnen Textbox schwer. Denn wenn die erste Textbox ihren Inhalt in die Zelle geschrieben hat, ist die Zeile ja nicht mehr leer. Würde ich With .Cells(.Rows.Count, 1).End(xlUp).Offset(1) auch in den Code von Textbox 2 schreiben, würde der Inhalt ja nicht mehr in die selbe Zeile, sondern in die nächste geschrieben. Ich hoffe jetzt mal, dass ich das, was ich meinte, euch verständlich machen konnte.
     
    Iluminati, 27. September 2008
    #7
  8. Value in Zelle schreiben

    Hi,

    du benötigst doch keinen Code für die Textboxen. Der Change-Event reagiert auf jeden Tastenanschlag. Wer schreibt den schon just in time von einer Textbox direkt in eine Tabelle? Du benötigst auf dem Userform neben den 21 Textboxen noch 2 Commanbuttons. Einen zu schließen des Forms und einen zum eintragen der Werte. Den Code für das Eintragen der Werte aller 21 Textboxen auf einmal hab ich dir als Beispiel geliefert.


    Klar, wähle eine winzig kleine Schrift, oder kauf dir einen sehr hohen Bildschirm. Oder wie willst du sonst Code mit mehreren hundert Zeilen auf einmal anzeigen lassen? Ich arbeite gerade an einem Projekt das jetzt schon 71.000 Zeilen hat und noch längst nicht fertig ist. Das sind gut 1.100 DIN A4 Seiten. Das passt einfach nicht mehr auf einen Monitor und 1.100 Monitore bieten da auch keinen besseren Überblick. Du musst halt konzentriert arbeiten, um den Faden nicht zu verlieren.
     
  9. Aha. Das hatte ich mir anders vorgestellt, aber das bringt Licht ins dunkel. Und das erklärt auch, weshalb (es auch nicht nötig ist) der Code nicht komplett in einem angezeigt wird.
     
    Iluminati, 27. September 2008
    #9
  10. Wenn ich die UserForm ablaufen lasse, bringt er mir in der Zeile With .Cells(.Rows.Count, 1).End(xlUp).Offset(1) einen Fehler - und zwar "Laufzeitfehler 424: Objekt erforderlich".

    Kannst Du mir verraten, wieso?
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    Iluminati, 28. September 2008
    #10
  11. Hallo,

    wie sollte ich? Ich sitz ja nicht an deinem Rechner mit deiner Mappe. Ich kann hier nur Beispiele reinstellen, welche bei mir funktionieren. Du kannst aber deine Mappe hochladen, dann kann ich mir das darin ansehen und dem Fehler auf den Grund gehen.
     
  12. Da ich das beruflich benötige, habe ich dir mal eine Testdatei erstellt. Die Daten in der Datei sind vertraulich. Da ich nicht weiß, mit welcher Excelversion Du arbeitest, habe ich es als kompatibel zu Office 2003 gespeichert.
     
    Iluminati, 28. September 2008
    #12
  13. Value in Zelle schreiben

    Hi,

    du darfst natürlich keine Excelnamen in VBA als Objektnamen benutzen. Deine Korrekturlist hat in VBA den Namen Tabelle3. Und damit funktioniert es auch.

    Private Sub CommandButton1_Click()
    Dim lngIndex As Long
    With Tabelle3
    With .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
    For lngIndex = 1 To 21
    .Offset(, lngIndex - 1).Value = _
    Controls("TextBox" & CStr(lngIndex)).Text
    Next
    End With
    End With
    End Sub
     
  14. Ok. Ich habe allerdings schon einmal Excelnamen in VBA gesehen. In welchem Zusammenhang (brauche kein Beispiel; nur allgemein) können Excelnamen verwendet werden?

    Ansonsten vielen Dank für deine Unterstützung. War wirklich hilfreich.
     
    Iluminati, 29. September 2008
    #14
  15. Hi,

    na z.B. so: Worksheets("Korrekturlist").....

    Hat halt den Nachteil, dass dein Code nicht mehr funktioniert, wenn der User auf den Gedanken kommt den Namen der Tabelle zu ändern. Mit dem Objektnamen bist du davon unabhängig.
     
Thema:

Value in Zelle schreiben

Die Seite wird geladen...
  1. Value in Zelle schreiben - Similar Threads - Value Zelle

  2. Abfrage in Excel importieren - Werte von mehrwertigen Feldern als Text anzeigen

    in Microsoft Access Hilfe
    Abfrage in Excel importieren - Werte von mehrwertigen Feldern als Text anzeigen: Hallo Ihr Lieben, ich habe verschiedene Felder als mehrwertiges Feld definiert und z.B zusätzliche Tabellen erstellen, aus welchen ich Daten für das mehrwertige Feld ziehe. Nun möchte ich eine...
  3. Excel Matrix: Search Value and provide value next to it

    in Microsoft Excel Hilfe
    Excel Matrix: Search Value and provide value next to it: I have an Excel table that is a bit messy with different dates below each other. User Date0 property0 Date1 property1 User1 28/10/21 1000 27/10/21 3000 User2 27/10/21 2000 26/10/21 300 User1...
  4. im Tabellenblatt alle Checkboxen im Value auf False setzen

    in Microsoft Excel Hilfe
    im Tabellenblatt alle Checkboxen im Value auf False setzen: Guten morgen werte Excelianer, ich möchte in einem Tabellenblatt alle Checkboxen (ActiveX-Steuerelemente) aus meinem VB-Code heraus (Button auf Userform) auf False setzen. Mein Ansatz war:...
  5. Laufzeitfehler '2147417848 (80010108)': Die Methode 'Value' für das Objekt 'Range'...

    in Microsoft Excel Hilfe
    Laufzeitfehler '2147417848 (80010108)': Die Methode 'Value' für das Objekt 'Range'...: Hallo! Ich habe eine VBA-Problem: Habe einen Vokabel-Trainer, bei dem beim Abfragen der Vokabeln das Programm regelmäßig abstürzt. Dies kommt insbesondere dann vor, wenn die Vokabeln beim...
  6. getelementbyid = ID per Value ermitteln und auslesen?

    in Microsoft Excel Hilfe
    getelementbyid = ID per Value ermitteln und auslesen?: Moin zusammen, kann mir jemand sagen, ob es grundsätzlich möglich ist, per VBA die ID eines Objects im Internet Explorer anhand dessen Value zu suchen/bestimmen? Ich versuche eine Seite zu...
  7. Listenfeld: Zwei werte aus gleicher Value

    in Microsoft Excel Hilfe
    Listenfeld: Zwei werte aus gleicher Value: Hallo Ich muss mit einem Listenfeld in einem Formular das Datum sowie den Kundennamen eintragen. Der Kundenname kommt aus einem Namensbereich. Er enhält einen KundenID sowie der Name des Kunden....
  8. MS Project Earned Value Analyse

    in Sonstiges
    MS Project Earned Value Analyse: Hallo zusammen, ich habe mich die letzten Tage intensiv in MS Project (2003) eingearbeitet und konnte bis jetzt eigentlich jedes Problem loesen. Das Ziel war eine Earned Value Analyse ueber...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden