Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
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
Eingabe in TextBox wiederholen
22.12.2022 07:11:13
Gula
Hallo zusammen,
ich weiß nicht, ob meine Idee, welche ich umsetzen möchte überhaupt per VBA möglich ist, aber vielleicht weiß ja einer eine Lösung.
Ich habe ein Makro, welches so funktioniert, dass ich beliebig viele Zellen markiere, dann einen Rechtsklick tätige und hierdurch der unten aufgeführte Code ausgeführt wird. Es öffnet sich ein UserForm2 mit einer TextBox1 Eingabe. Neben dem unten aufgeführten Code, werden auch noch mit einem anderen Makro die ausgewählten Zellen eingefärbt, aber für mein Anliegen sollte dieses Makro nicht relevant sein.
Nun zu meiner Frage. Ist es möglich, den Code dahingehend anzupassen, dass ab einer bestimmten ausgewählten Zellenlänge er die Eingabe, welche man in die TextBox1, getätigt hat, immer wieder wiederholt?
Als Beispiel: Wähle ich bis zu 20 Zellen nebeneinander aus, soll er den Eintrag aus der TextBox1 nur einmal eintragen. Also im Prinzip, so, wie der Code aktuell im Prinzip funktioniert. Wenn jetzt aber mehr Zellen ausgwewählt werden, dann soll er den Eintrag aus der Textbox alle 21 Zellen immer wieder wiederholen, aber maximal nur so lang, wie die zuvor getätigte Auswahl der Zellen ist.
Da ich aktuell in der Arbeit bin, kann ich erst später eine Beispieldatei hochladen. Aber vielleicht ist die Anpassung des Codes ja sogar ohne Beispieldatei schon möglich.
Auf jeden Fall bedanke ich mich schon mal recht herzlich und wünsche allen, die diesen Beitrag nur lesen, frohe Weihnachtstage.
Code, welcher nach dem Rechtsklick ausgeführt wird:

'Namenseingabe
Sub FzgName_Insert()
Selection.ClearContents 'vorhandene Texteingaben löschen
Dim sTxt As String
sTxt = UserForm2.TextBox1.Value
'MsgBox sTxt
If sTxt = "" Then Exit Sub
Selection.Cells(2).Value = sTxt
Call FzgFärben(sTxt)

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eingabe in TextBox wiederholen
22.12.2022 08:46:02
hary
Moin
Teste mal:

Sub FzgName_Insert()
Dim sTxt As String
sTxt = UserForm2.TextBox1.Value
If sTxt = "" Then Exit Sub
With Selection
.ClearContents 'vorhandene Texteingaben löschen
.Cells(2).Resize(.Rows.Count - 1, 1).Value = sTxt
End With
Call FzgFärben(sTxt)
End Sub
gruss hary
AW: Eingabe in TextBox wiederholen
22.12.2022 09:28:45
Gula
Hi hary,
danke, dass du dich der Sache angenommen hast. Ich hab den Code mal ausprobiert. Es kommt eine Fehlermedung "Laufzeitfehler 1004 Anwendungs- oder objektdefinierter Fehler".
Meckern tut er bei folgender Zeile: .Cells(2).Resize(.Rows.Count - 1, 1).Value = sTxt
Aber wahrscheinlich ist es gescheiter bis später zu warten, wenn ich eine Beispieldatei hochgeladen habe.
Grüße
Anzeige
AW: Eingabe in TextBox wiederholen
22.12.2022 09:48:58
hary
Moin
bis später zu warten, wenn ich eine Beispieldatei hochgeladen habe.
Yep, evtl ist das Blatt geschuetzt oder,oder.
gruss hary
AW: Evtl.keine Zellen markiert
22.12.2022 10:52:08
hary
Moin nochemal
Sind beim starten des Codes vlt. keine Zellen ausgewaehlt?
gruss hary
AW: Evtl.keine Zellen markiert
22.12.2022 17:06:27
Gula
So, hier ist die Datei. Ich hab sie auf das Wesentliche beschränkt und Makros, Tabellen, etc. welche nicht damit zusammenhängen entfernt.
https://www.herber.de/bbs/user/156898.xlsm
Der Sinn hinter dem Rechtsklick Makro ist der, dass links im Original verschiedene Fahrzeuge aufgeführt sind, welche in der Datum/Uhrzeit (00-24 h) dann markiert sind, woran man erkennt, wann dieses Fahrzeug nicht zur Verfügung steht, bzw. wer es wann nutzt.
Wenn man als Beispiel, Zellen markiert, dann einen Rechtsklick macht und in das TextBox1 Fenster dann 3101 eingibt, dann schreibt er diesen Wert in die zweite Zelle und färbt die gewählten Zellen gelb.
Wenn man 3122 eingibt, dann hat man zusätzlich die Wahl zwischen Schicht und Verfügung, da beide diese Zahlen nutzen.
Jetzt hätte ich es gerne so, dass wenn ich z.B. die Zellen von F10 bis AM10 markiere, er nicht nur in der zweiten markierten Zelle den Wert einträgt, sondern eben diesen alle z.B. 20 Zellen wiederholt. Wenn weniger als 20 Zellen ausgewählt wurden, dann soll nur einmal der Wert in Zelle 2 eingetragen werden, also so, wie es aktuell ja auch ist.
Grüße
Anzeige
AW: Evtl.keine Zellen markiert
23.12.2022 07:36:23
hary
Moin

Sub FzgName_Insert()
Dim sTxt As String
With Selection
.ClearContents 'vorhandene Texteingaben löschen
sTxt = UserForm2.TextBox1.Value
If sTxt = "" Then Exit Sub
If .Columns.Count  20 Spalten
.Cells(2).Resize(1, .Columns.Count - 1) = sTxt '--ab 2. Zelle alle Zellen
End If
End With
gruss hary
AW: Evtl.keine Zellen markiert
23.12.2022 10:50:59
Gula
Guten morgen Hary,
Hab den Code ausprobiert und es geht schon in die Richtige Richtung, dass er ab 20 Zellen den Wert wiederholen soll.
Allerdings schreibt er dann ab der zweiten Zelle in jede weitere Zelle den Wert. Ich würde es gerne so machen, dass er dann den Wert nur alle 20 Zellen schreibt.
Als Beispiel: Ich markiere die Zeile G14:Y14, dann schreibt er mir den Wert nur einmal in H14. Genau so, funktioniert das ja schon.
Wenn ich jetzt allerdings die Zellen G14:Z14 auswähle, dann soll einmal der Wert wieder in H14 stehen und zusätzlich in Z14.
So soll dass dann weitergehen, wenn man noch mehr Zellen auswählt.
Grüße
Anzeige
AW: Evtl.keine Zellen markiert
23.12.2022 11:44:45
hary
Moin
Du hattest aber geschrieben "alle Zellen"
Frage: Was soll eingetragen werden wenn du z.B. 44 Zellen auswaehlst.
Dann sind es 2 mal 20 und rest 4 Zellen. In welchen Zellen soll der Eintrag erfolgen?
Oder sind es dann immer 20er Schritte?
gruss hary
AW: Evtl.keine Zellen markiert
23.12.2022 11:53:29
Gula
Hallo Harry,
entschuldige, wenn ich mich falsch ausgedrückt hatte. Also es sollen dann immer 20er Schritte werden. Evtl könnte man es auch so bewerkstelligen, dass er sich auf die Datumszeile bezieht und den Wert dann immer mittig vom Tag schreibt. Also wenn nur 19 Zellen gewählt sind, den Wert einmal in die zweite Zelle, so wie es ja bereits funktioniert und alles was über 20 Zellen geht, dann immer einen Eintrag mittig vom Tag wiederholen. Wäre ja dann quasi bei dem 12 Uhr Eintrag.
Wenn das mit dem Datum zu umständlich ist, dann bin ich auch mit einer Lösung, dass alle 20 Zellen die Werte wiederholt werden.
Grüße
Anzeige
AW: 20'er Schritt
23.12.2022 12:42:17
hary
Moin
Dann versuch mal so.

'Namenseingabe
Sub FzgName_Insert()
Dim sTxt As String
Dim i As Long
With Selection
.ClearContents 'vorhandene Texteingaben löschen
sTxt = UserForm2.TextBox1.Value
If sTxt = "" Then Exit Sub
If .Columns.Count 
gruss hary
AW: 20'er Schritt
23.12.2022 13:03:19
Gula
Hallo Hary,
die Version geht schon in die richtige Richtung. Wenn ich jetzt von D bis W die Zellen markiere und das Makro ausführen lasse, dann stehen Werte in E, W und Y.
Kann man es so ändern, dass er nur dort auch Werte schreibt, was man zuvor ausgewählt hatte, also in diesem Fall dann nicht bei Y?
Grüße
Anzeige
AW: 20'er Schritt
24.12.2022 08:41:17
hary
Moin
Dann versuch mal:

'Namenseingabe
Sub FzgName_Insert()
Dim sTxt As String
Dim i As Long
With Selection
.ClearContents 'vorhandene Texteingaben löschen
sTxt = UserForm2.TextBox1.Value
If sTxt = "" Then Exit Sub
If .Columns.Count 
gruss hary
AW: 20'er Schritt
24.12.2022 09:25:57
Gula
Moin Hary,
vielen Dank für den Code. Ich hab ihn jetzt ein wenig angepasst, da es dann doch "schöner" ist, wenn der Wert alle 24 Std. wiederholt wird (wegen einem Tag). Hatte den Code dann auch noch -5 bei Columns.Count gesetzt. So hab ich genau das Ergebnis, wie ich es wollte!
Ich danke dir vielmals!
Vielleich kannst du mir noch eine Frage zu meinem Makro beantworten, bevor ich einen neuen Beitrag erstelle.
Und zwar, sobald man die Zellen markiert hat und den Rechtsklick nicht auf die ausgewählten Zellen setzt, dann nimmer er die Zelle, wo sich gerade der Cursor befindet. Lässt es sich irgendwie bewerkstelligen, dass sobald Zellen markiert sind, es egal ist, wo ich hin klicke, dass er dann immer das Makro auf die zuvor getätigte Auswahl ausführt?
Ansonsten wünsche ich frohe Weihnachten und noch mal vielen Dank!
Grüße
Hier noch der Code, wie ich ihn jetzt nutzen werde:

'Namenseingabe
Sub FzgName_Insert()
Dim sTxt As String
Dim i As Long
With Selection
.ClearContents 'vorhandene Texteingaben löschen
sTxt = UserForm2.TextBox1.Value
If sTxt = "" Then Exit Sub
If .Columns.Count 

Anzeige
AW: 20'er Schritt
24.12.2022 10:16:14
hary
Moin
Teste mal in einer blanken Mappe mit Tabelle.
Zum Einbauversuch in deine Mappe komme ich im Moment nicht.

Option Explicit
Dim Bereich As String '--muss aussrhalb der Subs oder als Public Variable in ein Modul.
'--bei Rechtsklick
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
With Range(Bereich) '--statt selection
.Interior.Color = vbYellow '--Bsp. mit faerben
End With
Bereich = ""
End Sub
'--bei Zellwechsel
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'--beim Zellwechsel wird die Adresse gemerkt
If Bereich = "" Then
Bereich = Selection.Address
Else
Exit Sub
End If
End Sub
gruss hary
Anzeige
AW: 20'er Schritt
24.12.2022 10:47:43
Gula
Hallo,
also ich habe den Code mal in eine leere Tabelle eingefügt und da funktioniert es so, wie ich es gerne hätte.
Ich habe dann versucht es in meinem Code einzubauen, aber da verhält es sich genauso wie vorher mit dem Clickbereich.
Den Code habe ich so auf dem Tabellenblatt angepasst:

Option Explicit
Dim Bereich As String
'Einfärben von Fahrzeugen
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
With Range(Bereich) '--statt selection
FzgFormat
UserForm2.Show
End With
Bereich = ""
Cancel = True 'Kontextmenü aufklappen unterbinden
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'--beim Zellwechsel wird die Adresse gemerkt
If Bereich = "" Then
Bereich = Selection.Address
Else
Exit Sub
End If
End Sub

Anzeige
AW: 20'er Schritt
24.12.2022 12:09:38
hary
Moin
So einfach ist es nicht. Nebenbei hab ich mich schon mal dran versucht.
Soweit so gut. Sind aber noch ein paar Fehler drin.
gruss hary
Falls Interesse lade ich das bisherige hoch, Wie gesagt es passt noch nicht alles.
AW: 20'er Schritt
24.12.2022 13:00:10
Gula
Ach Hary,
so eilig ist es dann nicht. Ich mach mich jetzt dann eh fertig und verbringe den Tag mit der Familie. Weihnachten und so 😊.
Erst morgen werde ich mich dem Thema wieder widmen.
Aber ich danke dir vielmals für deine Hilfe und wünsche dir ein frohes Fest.
AW: 20'er Schritt
25.12.2022 09:16:09
hary
Moin
Sry, aber ich komme bei der letzten Anforderung auf keinen gruenen Zweig.
Da muss ich passen.
gruss hary
Anzeige
AW: 20'er Schritt
25.12.2022 09:27:51
Gula
Hallo,
kein Problem. Du hast mir ja mit der anderen Sache einwandfrei geholfen und ich danke dir, dass du auch bei der anderen Frage dich der Thematik angenommen hast.
Vielleicht erstelle ich einen neuen Beitrag in dem ich das Problem mit dem Rechtsklick thematisiere.
Vielleicht ist es aber auch nicht möglich, es so umzusetzen, wie ich es mir vorstelle.
Grüße

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige