• 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.

omruilen van inhooud

Status
Niet open voor verdere reacties.
Werkt bij wel. Wat je wil met klikken begrijp ik niet net als het doel van deze exercitie. Heb je de codes van @cow18 en @snb wel geprobeerd? Ben je bekent met het gebruik van de <Ctrl> toets?
 
Laatst bewerkt:
Hai VenA,

jazeker ben ik bekend met de <Ctrl> toets

In de eerste routine die ik gebruikte maak ik gebruik van <Ctrl> toets. echter wilde ik toen slechts 2 cellen wisselen.
Nu wil ik door 2 cellen achter elkaar te gebruiken een aantal cellen wisselen.

Ik heb naar de opties van cow18 en snb gekeken.

Beide ruilen om, maar bij beide moet ik het aantal cellen wat ik wil ruilen zelf geheel selecteren.
Op zich voor mij zelf geen probleem maar het programma wordt door andere gebruikt en dan wordt dit te lastig. Het zou heel fijn/beter /handiger zijn als er slechte op de eerste en tweede cel wordt geklikt en dat dan het aantal cellen wat erachter liggen en mee moeten automatisch worden meegenomen.

Thanks voor het meedenken ik waardeer dat heel erg.
 
Laatst bewerkt:
vraagje: moeten er altijd 8 cellen omgeruild worden, dus altijd A t/m G?
 
nee. nooit 8 dat was maar een voorbeeld. maar het gaat om diensten in een maandrooster. En er staat nog wat meer bij. de ene keer zijn het 33 cellen, 32 cellen 30 of 29.
Maar denk dat ik daar 4 routines van maak het hangt af van de maand.
Kort gezegd heb je de naam, het aantal uur dat iemand werkt en het aantal dagen van de maand.
 
Plaats een relevant voorbeeldbestand. Met hoe het is en hoe het moet worden. Welke handelingen je doet en wat je ervan verwacht. Zelf al iets gedaan met de aangereikte suggesties? Laat dat dan ook zien.
 
Vergelijk het eens met je eerder geplaatste bestand en leg eens uit wat de bedoeling is. Het linkje in #2 heb je blijkbaar ook niet gelezen. Waarom zijn de kolomkoppen en rijnummers onzichtbaar? Waarom is er een koppeling naar een extern bestand? Waarom wil je wisselen? Waarom is er niets van de aangedragen suggesties terug te vinden? Dit gaat een zeer lang draadje worden omdat je totaal geen informatie geeft en niet verder komt dan stel en bijvoorbeeld.
 
tik in de cel BA1 je vast maandelijks getal, dus die 29,30, ...
Selecteer daarna 2 cellen uit de A-kolom en laat deze code lopen.
Enige probleem was als je 2 opeenvolgende cellen koos, daardoor werd de code iets moeilijker
Code:
Sub M_snb()
    Set c = Intersect(Selection, Columns("A"))
    If c.Cells.Count = 2 Then
        For Each c0 In c.Cells
            i = i + 1
            Select Case i
                Case 1: Set c1 = c0.Resize(, Range("BA1").Value): sn = c1
                Case 2: Set c2 = c0.Resize(, Range("BA1").Value): sp = c2
            End Select
        Next
        c1.Value = sp
        c2.Value = sn
    End If
End Sub
 
@Cow. Thanks, met een kleine aanpassing werkt het prima. Resize-waarde niet in een cel vastgelegd maar anders. Werkt top.

@VenA, je hebt gelijk wat de verwijzing betreft. dit blad is onderdeel van een groot aantal tabbladen. niet gemerkt dat ie daarnaar vroeg. Maakt op zich voor de routine niets uit. kop en rij zijn niet zichtbaar in het rooster programma wat ik maak omdat het onnodig is. op zich voor deze routine ook. en waarom ik rijen met info wel wisselen : omdat je soms binnen een rooster liever een andere werknemer in de eerste rij hebt.
En wat belangrijker is: de diensten die geroosterd zijn worden geteld in een kolom. Echter heeft mijn programma de mogelijkheid om een aantal regels = lees werknemers uit te sluiten van de telling. omdat ze bv dit stagiaires zijn of medewerkers die om een andere reden niet mogen meetellen.

Gelukkig dat door Cow18 het draadje niet langer hoefde te worden. :):)
 
misschien nog een kleine aanpassing, voeg dit toe tussen de 1e en de 2e regel, het gaat mis als er niets uit de A-kolom geselecteerd is
Code:
 If c Is Nothing Then Exit Sub
 
laatste aanpassing is super,
kan ik van beide cellen (reeksen ) die gewisseld worden lezen welke rij ze gebruiken?

boven de diensten staat namelijk een telling en ik wil voorkomen dat de roosteraar per abuis ruilt met de cellen waar de telling in staan.
De namen zijn in het rooster geblokkeerd en worden ontgrendeld als ze worden geruild en dan weer geblokkeerd.
 
Code:
Sub Omwissel()
    Set c = Intersect(Selection, Range("A15:A50"))                   'in deze range staan enkel namen
    If c Is Nothing Then MsgBox "geen enkele naam geselecteerd", vbCritical: Exit Sub
    If c.Cells.Count = 2 Then
        k = 33
        c.Locked = False                                             'namen ontgrendelen
        For Each c0 In c.Cells
            i = i + 1
            Select Case i
                Case 1: Set c1 = c0.Resize(, k): sn = c1
                Case 2: Set c2 = c0.Resize(, k): sp = c2
            End Select
        Next
        c1.Value = sp
        c2.Value = sn
        c.Locked = True                                              'namen vergrendelen
    Else
        MsgBox "geen 2 namen geselecteerd", vbCritical
    End If
End Sub
 
Top Cow18

met een kleine aanpassing, want ik vergrendel het hele blad werkt het uitstekend.
 
Andere methode:
Omwille van de vergelijkbaarheid schrijf ik het resultaat naar kolom 40

Code:
Sub M_snb()
  On Error GoTo XL90
     
  If Intersect(Selection, Range("A15:A50")).Count = 2 Then
    sn = Range("A15:A50").resize(,33)
    sp = Evaluate("row(1:" & UBound(sn) & ")")
        
    If Selection.Areas.Count = 1 Then
      y = Selection.Cells(1).Row - 14
      sp(y, 1) = y + 1
      sp(y + 1, 1) = y
    Else
      x = Selection.Areas(1).Row - 14
      y = Selection.Areas(2).Row - 14
      sp(x, 1) = y
      sp(y, 1) = x
    End If
        
    Range("A15:A50").resize(,33).Offset(, 40) = Application.Index(sn, sp)
  End If

XL90:
End Sub
 
Laatst bewerkt:
@SNB,

ik leer nog iedere dag. waarom heeft dit voordeel om het zo te doen?

thanks
Ronald
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan