Keuzelijst integreren met tekstvlak

Pagina: 1
Acties:

Onderwerpen

Vraag


  • WMJlut
  • Registratie: November 2018
  • Laatst online: 18-07-2023
Hallo allemaal,

Ik heb een vraag over excel.

Ik wil graag een keuzelijst combineren met een tekstvlak. Hiermee bedoel ik dat als ik keuze X uit de keuzelijst selecteer ik opmerkingen kan plaatsen in een tekstvlak die ik alleen zie wanneer ik Keuze X selecteer. Vervolgens als ik naar bv. keuze Y ga, krijg ik een 'nieuw tekstvlak' op dezelfde plaats waar ik opmerkingen kan plaatsen over keuze Y.

Iets meer context, ik wil opmerkingen plaatsen per maand, zonder dat ik daar 12 tekstvlakken voor hoef te hebben.

Hoop dat iemand me kan helpen!

Alvast bedankt!

Beste antwoord (via WMJlut op 05-12-2018 15:53)


  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Plaats op een afzonderlijk blad (bv. blad2, dat je evt. kunt verbergen) 12 tekstvakken en op het blad met de keuzelijst (bv. blad1) 1 tekstvak en een commandbutton om de tekst die je in het tekstvak wijzigt te kunnen opslaan, zodat je die later weer kunt oproepen. Plaats in het codeblad voor blad1 dan deze code (die is in onderstaand voorbeeld voor 3 keuzemogelijkheden, maar daar kun je naar believen een x-aantal andere keuze's aan toevoegen. De aanname is dat A1 de keuzelijst bevat en dat de keuze uit a, b, of c bestaat, maar in plaats van die letters kun je teksten van willekeurige lengte gebruiken.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("a1"), Target) Is Nothing Then
With Shapes("Textbox 1").TextFrame.Characters
Select Case Range("a1").Value
Case "a"
.Text = Sheets(2).Shapes("TextBox 1").TextFrame.Characters.Text
Case "b"
.Text = Sheets(2).Shapes("TextBox 2").TextFrame.Characters.Text
Case "c"
.Text = Sheets(2).Shapes("TextBox 3").TextFrame.Characters.Text
End Select
End With
End If
End Sub
Aan de comandbutton wijs je deze macro toe, die je in een module plaatst:
code:
1
2
3
4
5
6
7
8
9
10
11
12
Sub macro1()
With Sheets(1).Shapes(1).TextFrame.Characters
Select Case Range("a1").Value
Case "a"
Sheets(2).Shapes(1).TextFrame.Characters.Text = .Text
Case "b"
Sheets(2).Shapes(2).TextFrame.Characters.Text = .Text
Case "c"
Sheets(2).Shapes(3).TextFrame.Characters.Text = .Text
End Select
End With
End Sub

Alle reacties


  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Je wil bij elke keuze een ander tekstvlak, dan is het aantal tekstvlakken afhankelijk van het aantal keuze's in de cel(len) met een keuzelijst. Dat kunnen er minder of meer dan 12 zijn. Dat je het aantal tekstvakken wil beperken begrijp ik daarom niet zo goed.

[ Voor 16% gewijzigd door dix-neuf op 29-11-2018 18:16 ]


Acties:
  • 0 Henk 'm!

  • WMJlut
  • Registratie: November 2018
  • Laatst online: 18-07-2023
Ik wil onder de keuzelijst van 12 periodes één tekstvlak, echter als ik periode 1 selecteer kan ik tekst plaatsen in dat tekstvlak wat ik alleen wil zien als ik periode 1 selecteer in mijn keuzelijst. Selecteer ik vervolgens periode 2, dan wil ik de tekst van periode 1 niet zien in het tekstvlak, maar alleen de tekst die hoort bij periode 2.

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Plaats op een afzonderlijk blad (bv. blad2, dat je evt. kunt verbergen) 12 tekstvakken en op het blad met de keuzelijst (bv. blad1) 1 tekstvak en een commandbutton om de tekst die je in het tekstvak wijzigt te kunnen opslaan, zodat je die later weer kunt oproepen. Plaats in het codeblad voor blad1 dan deze code (die is in onderstaand voorbeeld voor 3 keuzemogelijkheden, maar daar kun je naar believen een x-aantal andere keuze's aan toevoegen. De aanname is dat A1 de keuzelijst bevat en dat de keuze uit a, b, of c bestaat, maar in plaats van die letters kun je teksten van willekeurige lengte gebruiken.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("a1"), Target) Is Nothing Then
With Shapes("Textbox 1").TextFrame.Characters
Select Case Range("a1").Value
Case "a"
.Text = Sheets(2).Shapes("TextBox 1").TextFrame.Characters.Text
Case "b"
.Text = Sheets(2).Shapes("TextBox 2").TextFrame.Characters.Text
Case "c"
.Text = Sheets(2).Shapes("TextBox 3").TextFrame.Characters.Text
End Select
End With
End If
End Sub
Aan de comandbutton wijs je deze macro toe, die je in een module plaatst:
code:
1
2
3
4
5
6
7
8
9
10
11
12
Sub macro1()
With Sheets(1).Shapes(1).TextFrame.Characters
Select Case Range("a1").Value
Case "a"
Sheets(2).Shapes(1).TextFrame.Characters.Text = .Text
Case "b"
Sheets(2).Shapes(2).TextFrame.Characters.Text = .Text
Case "c"
Sheets(2).Shapes(3).TextFrame.Characters.Text = .Text
End Select
End With
End Sub

Acties:
  • +1 Henk 'm!

  • WMJlut
  • Registratie: November 2018
  • Laatst online: 18-07-2023
Sorry voor de late reactie Dix-Neuf, maar hartstikke bedankt!

Hier ga ik mee aan de slag!