05.08.2019, 07:23
Seiten: 1 2
05.08.2019, 09:19
Moin Moin,
ich suche die Lösung für diese Variante:
"Wenn Du jedoch bei z.B. 5 cbo's und zwei beliebigen angeklickten immer die caption in rahmen1 und rahmen 2 haben willst, müsste man anders vorgehen. Man könnte z.B. erst mal die captions erfassen und anschliessend auf die rahmen verteilen. Dazu könnte man z.B. ein Array verwenden oder eine Collection. Da wäre ja auch der Fall interessant, wenn Du z.B. 3 cbo's anklickst, ob die in Reihenfolge des Anklickens in die rahmen sollen oder z.B. in Reihenfolge ihrer Indizees. "
- nicht die Reihenfolge des Anklickens
- sondern die Reihenfolge ihrer Indizees
Andreas
ich suche die Lösung für diese Variante:
"Wenn Du jedoch bei z.B. 5 cbo's und zwei beliebigen angeklickten immer die caption in rahmen1 und rahmen 2 haben willst, müsste man anders vorgehen. Man könnte z.B. erst mal die captions erfassen und anschliessend auf die rahmen verteilen. Dazu könnte man z.B. ein Array verwenden oder eine Collection. Da wäre ja auch der Fall interessant, wenn Du z.B. 3 cbo's anklickst, ob die in Reihenfolge des Anklickens in die rahmen sollen oder z.B. in Reihenfolge ihrer Indizees. "
- nicht die Reihenfolge des Anklickens
- sondern die Reihenfolge ihrer Indizees
Andreas
05.08.2019, 19:01
Hallöchen,
ich würde das so angehen. Deine 5 Rahmen-Variablen würde ich als Array ausführen, da man darüber dann mit einer Schleife gehen kann. Falls die Bereiche noch an anderer Stelle genutzt werden, müsstest Du dort auch noch ändern.
Über die Checkboxen gehe ich auch mit einer Schleife, da die schön kontinuierlich mit 100, 200 usw. benannt sind.
Das Größe vom Array ergibt sich aus der Anzahl der gewählten Checkboxen. Ich erweitere das dann, dadurch werden leere Inhalte erzeugt die ich zum Überschreiben eventuell aus einer letzten Auswahl vorhandener Inhalte nutze.
ich würde das so angehen. Deine 5 Rahmen-Variablen würde ich als Array ausführen, da man darüber dann mit einer Schleife gehen kann. Falls die Bereiche noch an anderer Stelle genutzt werden, müsstest Du dort auch noch ändern.
Über die Checkboxen gehe ich auch mit einer Schleife, da die schön kontinuierlich mit 100, 200 usw. benannt sind.
Das Größe vom Array ergibt sich aus der Anzahl der gewählten Checkboxen. Ich erweitere das dann, dadurch werden leere Inhalte erzeugt die ich zum Überschreiben eventuell aus einer letzten Auswahl vorhandener Inhalte nutze.
Code:
'Variablendeklarationen
Dim arrRahmenA(1 To 5), arrCaption
Dim iCnt%, strCaption$
'Array mit RahmenRange
arrRahmenA(1) = "A6:H9"
arrRahmenA(2) = "A12:H15"
arrRahmenA(3) = "A18:H21"
arrRahmenA(4) = "A24:H27"
arrRahmenA(5) = "A28:H32"
'Schleife zum Erfassen der Captions
For iCnt = 1 To 5
With Me.Controls("chkr" & iCnt & "00")
If .Value = True Then strCaption = strCaption & .Caption & ";"
End With
Next
'Array mit Captions erzeugen
arrCaption = Split(strCaption, ";")
'Array auf max. Anzahl Captions erweitern
ReDim Preserve arrCaption(5)
'Schleife zum Anlegen und Entfernen der Eintraege
For iCnt = 1 To 5
Range(arrRahmenA(iCnt)).Cells(2, 1).Value = arrCaption(iCnt - 1)
Next
06.08.2019, 08:16
Hallo Andreas,
eine Schleife sollte doch genügen. Das wäre der komplette Code im UserForm:
Dialog UserForm1
Gruß Uwe
eine Schleife sollte doch genügen. Das wäre der komplette Code im UserForm:
Dialog UserForm1
Option Explicit
Private Sub UserForm_Initialize()
Dim sngTop As Single, sngLeft As Single
Me.StartUpPosition = 0
sngLeft = Application.Left + Application.Width / 2 - Me.Width / 2
sngTop = Application.Top + Application.Height / 2 - Me.Height / 2
Me.Left = sngLeft
Me.Top = sngTop
End Sub
Private Sub cmdOK_Click()
Dim i As Long, j As Long
Dim oControl As Object
Dim oWs As Worksheet
Const lngAbstand As Long = 6
Const lngAnzahl As Long = 5
Const lngSpalten As Long = 8
Const lngZeilen As Long = 4
Const strZ1 As String = "A6"
Set oWs = Worksheets("Rahmen")
For i = 1 To lngAnzahl
Set oControl = Me.Controls("chkR" & i & "00")
If oControl.Value Then
If j = 0 Then
oWs.Range(strZ1, oWs.Cells.SpecialCells(xlCellTypeLastCell)).Delete Shift:=xlShiftUp
oWs.Range("H4").Value = "Checkboxen"
oWs.Range("H4").HorizontalAlignment = xlRight ' richtet den Text rechts aus.
End If
With oWs.Range(strZ1).Offset(j * lngAbstand).Resize(lngZeilen, lngSpalten)
.Cells(1).Value = oControl.Caption
'Rahmenlinie
.BorderAround ColorIndex:=1, Weight:=xlMedium
'Rahmenfarbe
.Interior.Color = RGB(255, 255, 255)
End With
j = j + 1
End If
Next i
If j = 0 Then
' wenn keine chkBox ausgewählt wird
MsgBox "Bitte ein Auswahl auswählen"
Else
Unload Me
End If
End Sub
Private Sub cmdCancel_Click()
Unload Me
End Sub
VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media
Code erstellt und getestet in Office 14 - mit VBAHTML 12.6.0
Typ | Name | Eigenschaften | ||||||||||||
CheckBox | chkR400 |
| ||||||||||||
CheckBox | chkR300 |
| ||||||||||||
CheckBox | chkR200 |
| ||||||||||||
CheckBox | chkR100 |
| ||||||||||||
CheckBox | chkR500 |
| ||||||||||||
CommandButton | cmdOK |
| ||||||||||||
CommandButton | cmdCancel |
| ||||||||||||
Frame | frmNE |
|
Gruß Uwe
06.08.2019, 12:43
Moin Moin André aus G in T und Moin Moin Uwe
DANKE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Ihr habt mir richtig weiter geholfen. Beides funktioniert. ENDLICH.
Wünsche Euch noch eine sonnige Restwoche.
Andreas mit einem breiten Lächeln
DANKE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Ihr habt mir richtig weiter geholfen. Beides funktioniert. ENDLICH.
Wünsche Euch noch eine sonnige Restwoche.
Andreas mit einem breiten Lächeln
Seiten: 1 2