• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Kopiëren van formulierbesturingselementen (VBA nodig?)

Status
Niet open voor verdere reacties.

Pieter671

Gebruiker
Lid geworden
26 jun 2015
Berichten
100
Ik wil graag in Excel 2013 een enquete maken.

Voor vraag 1 lukt dit.

Als ik nu regel 6 (cellen C6..G6) kopieer naar regel 7 (C7..G7) dan blijven de besturingselementen aan elkaar gekoppeld.

Op Regel 7 (etc.) moet precies hetzelfde staan als op regel 6, maar dan met output naar CEL I7 etc. etc.


Weet iemand hoe je dit gerealiseerd krijgt?
Hoe is dit op een bepaalde manier te kopiëren of misschien wel in VBA op te zetten?

Pieter

Voorbeeld:
 

Bijlagen

  • Enquete.xlsm
    34,4 KB · Weergaven: 19
Simpel de koppeling aanpassen in de opmaak van het keuzerondje.
 
@Edmoor,

Als ik de vijf keuzerondjes kopieer, dan blijven alle 10 de keuzerondjes aan elkaar gekoppeld een verwijzen voor resultaat allemaal naar dezelfde cel.

Bij aanpassen van de koppeling blijft voorgaande hetzelfde.
 
Laatst bewerkt:
Gebruik ActiveX keuzerondjes, dan kan je ze per groep een naam geven en zijn ze onafhankelijk.
 
Ook met de gebruikte keuzerondjes kan je groepen gebruiken. 1 regel voor de voorwaardelijke opmaak is voldoende. Beter kan je die keuzerondjes helemaal niet gebruiken omdat ze nogal eens rare effecten kunnen geven.
 

Bijlagen

  • Enquete.xlsm
    35,7 KB · Weergaven: 24
Mooi workaround en vervolgvraag

@edmoor en @AenA bedankt voor de tips. Ik ben wat verder gaan zoeken en heb en mooie oplossing gevonden.
Geen keuzerondjes - dus ook geen rare en nare effecten - en geen ActiveX.
Zie bijgevoegd bestand.

Interessant bij dit onderwerp is de volgende link:
https://office-oplossingen.nl/2013/04/11/hoe-maak-ik-een-eenvoudige-enquete-in-excel/

Code:
Option Explicit

Private Sub Workbook_Open()

    Application.MoveAfterReturn = False
          
    Application.OnKey "{down}", ""
    Application.OnKey "{up}", ""
    Application.OnKey "{left}", ""
    Application.OnKey "{right}", ""
    
    Application.Cursor = xlNorthwestArrow
    
    
    Worksheets("Enquête").Select
    Range("A1:K1").Select
    ActiveWindow.Zoom = True
    'Range("D4").Select
    

End Sub

Private Sub Workbook_BeforeClose(CANCEL As Boolean)

    Application.MoveAfterReturn = True
    
    Application.OnKey "{down}"
    Application.OnKey "{up}"
    Application.OnKey "{left}"
    Application.OnKey "{right}"
    
    Application.Cursor = xlDefault
    
End Sub

Code:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

' Voor een mooi rondje en rondje met punt letterype 'Wingdings2' selecteren

Dim i As Integer

    Application.ScreenUpdating = False
    

    If LCase(ActiveSheet.Cells(1, 2).Value) <> "invullen" Then
      ' niets doen, we zijn een enquete aan het invoeren
    ElseIf ActiveCell.Column > 3 And ActiveCell.Column <= 8 Then
        
        If ActiveCell.Value = Chr(153) Then
            'alles op deze regel leeg maken
            For i = 4 To 8
                Cells(ActiveCell.Row, i).Value = Chr(153)
            Next i
            'huidige cel selecteren
            ActiveCell.Value = Chr(158)
        End If
    
    End If
    
    'Application.ScreenUpdating = True
    
End Sub


Ik loop nu wel tegen het volgende aan:

Zoals jullie zien is de mouse-pointer aangepast naar een pijltje.

De cel-pointer is nog een zwart vierkantje. Het zou mooi zijn als deze niet zwart, maar transparant is.
Het lijkt dan net alsof je een formulier invult.

Is het mogelijk om een celpointer (de randen) in VBA transparant te maken?

Pieter
 

Bijlagen

  • Enquete 3.xlsm
    36,2 KB · Weergaven: 27
De code in Thisworkbook is overbodig. Dit is ook voldoende voor het aan- en uitvinken

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If LCase(Cells(1, 2)) <> "invullen" Then Exit Sub
    If Target.Value = Chr(153) Then
      Cells(Target.Row, 4).Resize(, 5) = Chr(153)
      Target.Value = Chr(158)
    End If
End Sub
 
Dank je wel voor de verkorte code.

Is er een oplossing voor onderstaande?

De cel-pointer is nog een zwart vierkantje. Het zou mooi zijn als deze niet zwart, maar transparant is.
 
Dat kan niet.
Maar kijk eens of je dit wat vind (Kleine uitbreiding op de code van VenA):
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If LCase(Cells(1, 2)) <> "invullen" Then Exit Sub
    If Target.Value = Chr(153) Then
      Cells(Target.Row, 4).Resize(, 5) = Chr(153)
      Target.Value = Chr(158)
      [COLOR="#FF0000"]Cells(Target.Row, 2).Select[/COLOR]
    End If
End Sub

Daarnaast denk ik dat je het geheel beter iin een userform kan gieten.
 
Laatst bewerkt:
Het aantal regels in de VO moet je ook nog reduceren. Hoe meer regels hoe trager het bestand.

Samengevoegde cellen is ook niet zo'n goed idee.

De formule voor het resultaat kan ook wel wat eenvoudiger.
Code:
=MATCH(CHAR(158);D4:H4;0)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan