Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Inhalte aus Array behalten

Forumthread: Inhalte aus Array behalten

Inhalte aus Array behalten
01.02.2025 10:28:16
Chris
Hallo Forum,

ich habe fünf ToggleButtons (Caption jeweils "1", "2", ..."5"), die per Click-Ereignis jeweils das untenstehende Makro (hier aus dem Forum) auslösen.
Es bewirkt, dass das Caption des jeweiligen Buttons in Zelle 19 geschrieben wird und dabei bereits bestehende Inhalte der Zelle erweitert
werden.

Bsp: Der String "1,3" ist in der Zelle vorhanden und wird durch einen weiteren Button erweitert zu bspw. "1,3,5".
Soweit funktioniert das gut.

Nun das Problem: Die fünf Togglebuttons sind Teil einer Userform. Schließt man die Userform, öffnet diese anschließend erneut und
betätigt bspw. ToggleButton4, wird der bestehende Inhalt in Zelle 19 gelöscht und nur durch den String "4" ersetzt.

Der bereits bestehende Inhalt in Zelle 19 soll jedoch erhalten bleiben.
Wie muss man das Makro erweitern? ("Wenn in Zelle 19 nicht "--" steht, behalte den Inhalt aus arr und erweitere diesen")



Private Sub ToggleButton5_Click()
Dim arr(5) As String
Dim i As Integer

For i = 7 To 11
If UF.Controls("Togglebutton" & i).Value = True Then
arr(i - 7) = UF.Controls("Togglebutton" & i).Caption
End If
Next i

With Sheets("Test")

.Cells(ActiveCell.Row, 19).Value = Join(arr, "")

If Len(.Cells(ActiveCell.Row, 19).Value) 1 Then
.Cells(ActiveCell.Row, 19).Value = "--"
End If

.Cells(ActiveCell.Row, 19).EntireColumn.AutoFit

End With


Gruß
Chris
Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalte aus Array behalten
01.02.2025 10:39:20
Onur
"behalte den Inhalt aus arr und erweitere diesen" ?
Was genau meinst du damit?
Wenn da z.B. "Hallo" oder die Zahl 3,14 steht, was soll dann daraus werden ?
AW: Inhalte aus Array behalten
01.02.2025 11:18:56
ralf_b
vielleicht tut's das ja auch .



With Sheets("Test").Cells(ActiveCell.Row, 19)

.Value = IIf(Len(.Value) = 0 Or .Value = "--", Join(arr, ""), .Value & "," & Join(arr, ""))
.EntireColumn.AutoFit

End With



Anzeige
AW: Inhalte aus Array behalten
01.02.2025 11:33:24
Chris
Ralf: Leider nein, die Zeichenfolge wird immer länger...
AW: Inhalte aus Array behalten
01.02.2025 11:25:52
Ulf
Hi,
wechselweise UF->Zelle ?


Private Sub ToggleButton5_Click()
Dim strWert As String
Dim i As Integer
For i = 7 To 11
If UF.Controls("Togglebutton" & i).Value = True Then
strWert = strWert & UF.Controls("Togglebutton" & i).Caption & ","
End If
Next i
If strWert = "," Then
strWert = "--"
Else
strWert = Left(strWert, Len(strWert) - 1)
End If
With Sheets("Test")
.Cells(ActiveCell.Row, 19).Value = strWert
.Cells(ActiveCell.Row, 19).EntireColumn.AutoFit
End With
End Sub

Private Sub UserForm_Initialize()
Dim strWert() As String
Dim i As Integer
If Sheets("Test").Cells(ActiveCell.Row, 19).Value = "" Then
Exit Sub
End If
strWert = Split(Sheets("Test").Cells(ActiveCell.Row, 19).Value, ",")
For i = 0 To UBound(strWert)
UF.Controls("Togglebutton" & i + 7).Value = CBool(strWert(i) = UF.Controls("Togglebutton" & i + 7).Caption)
Next i
End Sub

hth
Ulf
Anzeige
AW: Inhalte aus Array behalten
01.02.2025 13:04:06
Chris
Hallo Ulf,

nah dran! Bei Aufrufen der Userform werden - bei mir - entweder keine / nicht alle Buttons aktiviert und der Inhalt der Zelle wird teilweise gelöscht, wenn man einen Button betätigt...
AW: Inhalt in Zelle zurücksetzen
01.02.2025 11:47:40
GerdL
Moin
Private Sub CommandButton1_Click()



If .Cells(ActiveCell.Row, 19) = "--" Then
.Cells(ActiveCell.Row) = ""
Else
.Cells(ActiveCell.Row, 19) = "--"
End If

End Sub

Gruß Gerd
Anzeige
AW: Inhalte aus Array behalten
01.02.2025 11:00:58
Chris
Hallo Onur,

ich versuche es genauer:

Zelle 19 enthält die jeweiligen Captions der Togglebuttons, jeweils getrennt durch ein Komma, bspw: 1,3,5 (=Die Button 1, 3 und 5 wurden geklickt, sind optisch jeweils TRUE).

Die Userform bleibt geöffnet, ich betätige die Buttons 1,3,5 erneut (sie sind dann jeweils FALSE) und Zelle 19 steht dann "--".

Man schließt und öffnet die Userform erneut, klickt die Buttons 1 und 3, der Zelleninhalt ist somit "1,3".
Die Userform wird erneut geschlossen und geöffnet, der Zelleinhalt ist immer noch 1,3 und NICHT "--".

Jetzt betätige ich Togglebutton 4, der Inhalt in Zelle 19 soll sein: 1,3,4 (im Moment wird der String "1,3" gelöscht und durch "4" ersetzt.)

Daher: "Wenn der Inhalt in Zelle 19 nicht "--" ist, lese den Inhalt aus Zelle 19 zunächst ein und dann passe ihn an, je nachdem welcher der fünf Togglebuttons betätigt wird."

Ich hoffe, das ist verständlicher :-)

Chris


Anzeige
AW: Inhalte aus Array behalten
01.02.2025 11:03:19
Onur
OK, aber WANN soll den gelöscht werden? Sonst wir der Text ja länger und länger und....
AW: Inhalte aus Array behalten
01.02.2025 11:13:47
Chris
"Wann soll gelöscht werden" - Du meinst den Inhalt des Arrays?
Mmh... ich denke es wäre sinnvoll das Array immer zu löschen und neu einzulesen, wenn der ToggleButton auf True ist.
Soll ich eine Mappe hochladen?

Chris
Anzeige
AW: Inhalte aus Array behalten
01.02.2025 11:15:40
Onur
"Soll ich eine Mappe hochladen? " - Auf jeden Fall!
Ich meinte: "Wann soll die ZELLE gelöscht werden? Das ARRAY ist belanglos, brauchst du wahrscheinlich noch nicht einmal.
AW: Inhalte aus Array behalten
01.02.2025 11:17:24
Onur
Und: Wozu brauchst du die Zeichenkette in der Zelle überhaupt ?
AW: Inhalte aus Array behalten
01.02.2025 11:26:15
Chris
Die Zeichenkette benötigte ich, da ich mit den Zählen bestimmte Datumswerte errechne. Bspw. 1, 3,5 : jeder 1., 3., 5. Dienstag vom 01.01. - 01.6. usw.
Ich schaue mir den Vorschlag von Ralf an...mom.
Anzeige
AW: Inhalte aus Array behalten
01.02.2025 11:27:24
Onur
Wenn du jetzt zweigleisig fahren willst, bin ich raus.
AW: Inhalte aus Array behalten
01.02.2025 11:33:45
Chris
Mappe kommt.
AW: Inhalte aus Array behalten
01.02.2025 11:58:04
Chris
HIer die Mappe

TB betätigen, UF schließen, erneut öffnet, TB wieder betätigen, Zelleninhalt wird überschrieben, nicht erweitert...

https://www.herber.de/bbs/user/175414.xlsm

Chris
Anzeige
AW: Inhalte aus Array behalten
01.02.2025 12:16:12
Onur
SO wird das aber nix.
Da fehlt ja das Wichtigste - Wo ist das komplette Makro, wo was in die ZEllen geschrieben wird?
Die Zelle wird ja wohl in einer Schleife (iRow) verändert. WO ist das?
AW: Inhalte aus Array behalten
01.02.2025 14:54:25
Chris
Hallo Onur,

top! Danke.

Es wäre nett, wenn du mir das Makro erklären würdest,

Gruß
Chris
AW: Inhalte aus Array behalten
01.02.2025 18:47:57
Onur
Sub UserForm_Activate()
Wenn ActiveCell leer oder = "--" ist, passiert gar nix
Sonst: Text wird zerstückelt und in ein Array gepackt, das nur so viele Elemente hat, wie Zahlen vorhanden sind. Für jede dieser Zahlen wird das entsprechende Button gesetzt und grün gefärbt.
Sub MoX(x As Integer)
Durch die Übergabe von x weiss die Sub, WELCHES Button sie aufgerufen hat und setzt die Farbe des Buttons entsprechend seines Werts.
Dann wird ActiveCell erst mal auf "--" gesetzt und dann, anhand der Werte der Buttons neu zusammengebaut (z.B. wenn 2 und 4 gedrückt - "2,4" usw.).
Dadurch dass die Nr des Buttons an MoX übergeben wird, kann fast der ganze Code in MoX ausgelagert werden und du brauchst diesen Part nicht in alle 5 Subs der Buttons mit zu kopieren.
Worksheet_SelectionChange
Userform UF wird geschlossen und neu geöffnet, damit Activate wieder getriggert wird.
vbModeless sorgt dafür, dass du auf dem Blatt weiterarbeiten (z.B. andere Zellen anklicken) kannst, wenn UF geöffnet ist.
Anzeige
AW: Inhalte aus Array behalten
01.02.2025 12:49:36
Chris
Das Makro ist in Modul 1:



Sub MoX()

Dim arr(5) As String
Dim i As Integer

For i = 7 To 11
If UF.Controls("Togglebutton" & i).Value = True Then
arr(i - 7) = UF.Controls("Togglebutton" & i).Caption
End If
Next i

With Sheets("TEST")

.Cells(ActiveCell.Row, 2).Value = Join(arr, "")

If Len(.Cells(ActiveCell.Row, 2).Value) 1 Then
.Cells(ActiveCell.Row, 2).Value = "--"
End If

.Cells(ActiveCell.Row, 2).EntireColumn.AutoFit
End With

End Sub

Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18