Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

TextBoxes anpassen

TextBoxes anpassen
22.05.2020 09:19:35
Wolfgang
Hallo,
den nachfolgenden Code konnte ich gestern unter Recherche entdecken. Ich würde allerdings gerne anstelle der TextBoxes 1-7 die TextBoxes 11-17 (ist Zufall) berücksichtigt haben. Meine Versuche, den Code anzupassen, sind leider gescheitert. Es erscheint eine Fehlermeldung Index außerhalb des gültigen Bereichs. Für eine Rückmeldung, Hilfestellung wäre ich sehr dankbar.
Herzliche Grüße - Wolfgang
  • Option Explicit
    Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim arrModule As Variant
    With Worksheets("Administrativ")
    .[T1] = "Überlegt wurde der Besuch folgender Module:" '
    .[T1] = Application.Substitute(.[T1], Chr(10), " ")
    .Range("T2:T8").ClearContents
    'Mod 1 bis Mod 7
    arrModule = Array("Modul 1", "Modul 2", "Modul 3", "Modul 4", "Modul 5", "Modul 6", " _
    Modul 7")
    For i = 1 To 7 'hier hatte ich bereits auf 11-17 geändert - was übersehe ich?
    If Controls("TextBox" & i).Text  "" Then
    .Cells(i + 1, 20) = arrModule(i - 1) & Chr(10) & Controls("TextBox" & i).Text &  _
    Chr(10) & "Woche/n"
    .Cells(i + 1, 20) = Application.Substitute(.Cells(i + 1, 20), Chr(10), " ")
    Else
    .Cells(i + 1, 20) = ""
    End If
    Next
    End With
    If MsgBox("Daten in Zwischenablage nehmen?", vbYesNo) = 6 Then
    'löscht leere Zeilen und nimmt Zellen in Zwischenablage
    Leerzeilen_loeschen
    ZwA
    End If
    End Sub
    


  • 15
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: TextBoxes anpassen
    22.05.2020 09:31:01
    Hajo_Zi
    Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
    Sollte die Datei verlinkt werden?
    Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
    http://www.ms-office-forum.de/forum/showthread.php?t=322895
    änderrn.
    Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
    http://www.excel-ist-sexy.de/bilder-statt-datei/
    Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
    Das ist nur meine Meinung zu dem Thema.

    Anzeige
    AW: TextBoxes anpassen
    22.05.2020 09:39:25
    Martin
    Hallo Wolfgang,
    da hat sich wieder einmal unser Forenclown Hajo gemeldet und nichts Sinnvolles zur Lösung des Problems beigetragen.
    Der von dir gefunde Beitrag in der Recherche stammt zufällig von gestern und ich hatte den Code für Werner.B so angepasst. Eigentlich musst du nichts anderes machen als die Zahl 10 auf den Index der TextBoxen zu addieren. Das betrifft nur folgenden Abschnitt:
            For i = 1 To 7
    If Controls("TextBox" & i + 10).Text  "" Then
    .Cells(i + 1, 1) = arrModule(i - 1) & Chr(10) & Controls("TextBox" & i + 10).Text & Chr(10) & "Woche/n"
    '.Cells(i + 1, 1) = Application.Substitute(.Cells(i + 1, 1), Chr(10), " ")
    .Cells(i + 1, 1) = Replace(.Cells(i + 1, 1), Chr(10), " ")
    Else
    .Cells(i + 1, 1) = ""
    End If
    Next
    
    Viele Grüße
    Martin
    Anzeige
    Autoformatierung hat VBA-Code zerschossen
    22.05.2020 09:46:17
    Martin
    Hallo Wolfgang,
    jetzt poste ich den Code noch einmal, weil durch meine Fettformatierung der Anpassungen Controls("TextBox" & i + 10) ein Fehler bei der Darstellung meines Codes aufgetreten ist:
    For i = 1 To 7
    If Controls("TextBox" & i + 10).Text  "" Then
    .Cells(i + 1, 1) = arrModule(i - 1) & Chr(10) & Controls("TextBox" & i + 10).Text & Chr( _
    10) & "Woche/n"
    '.Cells(i + 1, 1) = Application.Substitute(.Cells(i + 1, 1), Chr(10), " ")
    .Cells(i + 1, 1) = Replace(.Cells(i + 1, 1), Chr(10), " ")
    Else
    .Cells(i + 1, 1) = ""
    End If
    Next
    
    Viele Grüße
    Martin
    Anzeige
    Vielen lieben Dank, Martin - klappt super
    22.05.2020 10:45:02
    Wolfgang
    Hallo Martin,
    vielen lieben Dank für Deine Meldung und Hinweise zur Anpassung des Codes. Ich habe ihn hier eingepflegt und weiter angepasst. Er läuft nun wunderbar. Wenn ich mir noch eine Frage erlauben darf, nachdem ich nun weiß, dass der Code im Original von Dir stammt: Ich überlege, ob ich die Module, so wie sie im Code Array genannt werden, vielleicht auch über Zellbezug hinbekommen könnte - z.B. dass anstelle "Modul1" der Hinweis auf Tabelle "Administrativ" Zelle L1 da stehen könnte. Hättest Du da evtl. noch einen Tipp für mich? - Nochmals vielen vielen Dank und herzliche Grüße - Wolfgang
    Anzeige
    AW: Vielen lieben Dank, Martin - klappt super
    22.05.2020 11:28:25
    Martin
    Hallo Wolfgang,
    du kannst das Array auch einfach mit Zellinhalten füllen:
    arrModule = Array([L1].Text, [L2].Text, [L3].Text, [L4].Text, [L5].Text, [L6].Text, [L7].Text)
    

    Alternativ kannst du das Array auch mit einem Zellenbereich füllen, das geht aber nur bei zusammenhängenden Zellen:
        Dim arrModule As Variant
    arrModule = Range("L1:L7")
    
    ...allerdings wird dann ein zweidimensionales Array gebildet, welches bei Index = 1 beginnt. Das Array in der Schleife wird dann mit arrModule(i, 1) ausgelesen. Insgesamt müsste der Code also so aussehen:
    Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim arrModule As Variant
    With Worksheets("Tabelle2")
    'If TextBox1.Text  "" Then
    .[A1] = "Überlegt wurde der Besuch folgender Module:" '& Chr(10) & TextBox1.Text & Chr(  _
    _
    10) & "Wochen" '& TextBox2.Text & Chr(10) & TextBox3.Text & Chr(10) & TextBox4.Text & Chr(10)
    .[A1] = Application.Substitute(.[A1], Chr(10), " ")
    .Range("A2:A8").ClearContents
    'Mod 1 bis Mod 7
    arrModule = Range("L1:L7")
    For i = 1 To 7
    If Controls("TextBox" & i + 10).Text  "" Then
    .Cells(i + 1, 1) = arrModule(i, 1) & Chr(10) & Controls("TextBox" & i + 10). _
    Text & Chr(10) & "Woche/n"
    '.Cells(i + 1, 1) = Application.Substitute(.Cells(i + 1, 1), Chr(10), " ")
    .Cells(i + 1, 1) = Replace(.Cells(i + 1, 1), Chr(10), " ")
    Else
    .Cells(i + 1, 1) = ""
    End If
    Next
    .Range("A2:A8").SpecialCells(xlCellTypeConstants).Copy
    End With
    End Sub
    
    Viele Grüße
    Martin
    Anzeige
    AW: Vielen lieben Dank, Martin - klappt super
    22.05.2020 11:54:41
    Wolfgang
    Hallo Martin,
    erneut vielen Dank.- Ich hatte mich noch mit der Ergänzung des Codes versucht und den Zellbezug auf die Tabelle "Administrativ" hinzubekommen. Leider ohne den gewünschten Erfolg. Nachstehend ein Auszug aus meine missglücktem Versuch. Wenn Du mir da auch noch helfen könntest?
    Viele Grüße - Wolfgang
  • Array([Sheets"Administrativ" L1].Text, [Sheets"Administrativ" L2].Text,

  • AW: Vielen lieben Dank, Martin - klappt super
    22.05.2020 12:10:10
    Werner
    Hallo,
    du befüllst doch dein Array innerhalb eines With - End With. Somit hast du doch schon einen Bezug auf das entsprechende Tabellenblatt.
    With Worksheets("Administrativ")
    

    Bei den einzelnen Zellen innerhalb des With - End With mußt du nur darauf achten, dass vor jeder Range ein Punkt ist. Dadurch referenzierst du die angesprochene Range auf das Tabellenblatt, das du im With angegeben hast.
    arrModule = Array(.Range("L1"), .Range("L2"), .Range("L3"), .Range("L4"), .Range("L5"), _
    .Range("L6"), .Range("L7"))
    
    Gruß Werner
    Anzeige
    AW: Vielen lieben Dank, Martin - klappt super
    22.05.2020 12:41:12
    Martin
    Hallo Wolfgang,
    hier ein Beispiel wie ich es machen würde:
    With Sheets("Administrativ")
    arrModule = Array(.[L1].Text, .[L2].Text, .[L3].Text, .[L4].Text, .[L5].Text, .[L6].Text, .[ _
    L7].Text)
    End With
    
    Bei Werners Vorschlag wird die gesamte Zelle ins Array übertragen, deshalb würde ich es bevorzugen mit ".Text" oder ".Value" ausschließlich den Inhalt in das Array zu übertragen.
    Viele Grüße
    Martin
    Super - klappt nun alles super!! - Danke!!
    22.05.2020 12:54:25
    Wolfgang
    Hallo Martin,
    vielen vielen Dank für einerseits Deine Arbeit, andererseits auch Deine Geduld mit mir. Ich habe noch die Änderungen vorgenommen und der Code läuft nun wunderbar. Du hast mir sehr geholfen.
    Herzliche Grüße und ein schönes Wochenende - Wolfgang
    Anzeige
    hatte etwas übersehen, Werner
    22.05.2020 12:41:19
    Wolfgang
    Hallo Werner,
    danke für die Antwort. Es stimmt, ursprünglich sollte der Code aus der Tabelle Administrativ "bedient" werden. Das kollidiert aber leider mit einem anderen Code, der zum Teil -gewollt- Zeilen löscht. Ich habe daher in diesem Code generell die Tabelle "Administrativ" gegen "Zwischenablage" getauscht und würde "nur" lediglich gerne erreichen, dass in dem Passus der Text noch aus Tabelle "Administrativ" gezogen wird.
    Sorry, hatte ich versäumt, mitzuteilen.
    Vielen Dank und Gruß - Wolfgang
    AW: TextBoxes anpassen
    22.05.2020 09:38:13
    Herbert
    Warum beachtest du diesen Hinweis nicht? Glaubst du dass wir Lust haben, deine AM nachzubauen?
    Anzeige
    Was habt ihr denn nur?
    22.05.2020 09:42:21
    Martin
    Hey Herbert,
    jetzt begibst du dich auch schon auf das Niveau von Hajo? Er hat den Code doch gepostet und klar geschrieben, dass nur eine Anpassung der TextBox-Bezeichnungen erfolgen soll. Wozu ist denn in dem Fall eine Beispielmappe notwendig?
    Viele Grüße
    Martin
    AW: Was habt ihr denn nur?
    22.05.2020 10:00:11
    Herbert
    Hallo Martin,
    du hast recht, ich hatte mir das Ganze nicht genau genug angeschaut! Aber den Hinweis sende ich lieber einmal öfter, als einmal zu wenig.
    Servus
    AW: TextBoxes anpassen
    22.05.2020 10:06:05
    Daniel
    Hi
    Du musst bedenken, dass du die Variable i nicht nur für die Ermittlung der Textboxnamen verwendet, sondern auch noch an anderer Stelle (Zellzugriff, Array-Wert) und an diesen Stellen weiterhin die Werte 1-7 benötigt werden und nicht 11-17.
    Lösung siehe Martin.
    Gruß Daniel
    Anzeige
    Danke, Daniel
    22.05.2020 10:47:01
    Wolfgang
    Hallo Daniel,
    auch Dir vielen lieben Dank für die Hinweise.
    Viele Grüße - Wolfgang

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige