Hierbij edmoor.Met de code die ik plaatste valt ook de kolom "vrij" in het bereik.
Plaats dus eens je document zoals deze nu is.
Bekijk de onderstaande video om te zien hoe je onze site als een web app op je startscherm installeert.
Opmerking: Deze functie is mogelijk niet beschikbaar in sommige browsers.
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.
Hierbij edmoor.Met de code die ik plaatste valt ook de kolom "vrij" in het bereik.
Plaats dus eens je document zoals deze nu is.
Je hebt dus geen extra rij maar een kolom ingevoegd. Dan moet je daar de kolom informatie in de code uiteraard ook op aanpassen.
En er dan ook nog voor zorgen dat de lege kolom wordt overgeslagen.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Column
Case 3 To 8
Cells(Target.Row, 3).Resize(, 6).ClearContents: Target.Value = 7.25
Case 10 To 15
Cells(Target.Row, 10).Resize(, 6).ClearContents: Target.Value = 7.25
Case 17 To 22
Cells(Target.Row, 17).Resize(, 6).ClearContents: Target.Value = 7.25
End Select
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With Target
If .Column <> 1 And .Column Mod 6 <> 2 Then
Cells(.Row, 3).Offset(, (Application.RoundUp((.Column - 1) / 6, 0) - 1) * 6).Resize(, 6).ClearContents
.Value = 7.25
End If
End With
End Sub
Ah ik zie het.Probeer deze maar eens. Je moet dan wel voor iedere "Vrij" een lege kolom invoegen:
Code:Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Select Case Target.Column Case 3 To 8 Cells(Target.Row, 3).Resize(, 6).ClearContents: Target.Value = 7.25 Case 10 To 15 Cells(Target.Row, 10).Resize(, 6).ClearContents: Target.Value = 7.25 Case 17 To 22 Cells(Target.Row, 17).Resize(, 6).ClearContents: Target.Value = 7.25 End Select End Sub
Wat de wijiziging betreft, het is gewoon een kwestie van kolommen tellen.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With Target
If .Column <> 1 And .Column Mod 6 <> 2 Then
Cells(.Row, 3).Offset(, ((.Column - 1) \ 7) * 6).Resize(, 6).ClearContents
.Value = 7.25
End If
End With
End Sub
Of:
Code:Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Column <> 1 And .Column Mod 6 <> 2 Then Cells(.Row, 3).Offset(, ((.Column - 1) \ 7) * 6).Resize(, 6).ClearContents .Value = 7.25 End If End With End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Column
Case Is < 3, Is > 22: kolom = 0
Case Is >= 17: kolom = 17
Case Is >= 10: kolom = 10
Case Is >= 3: kolom = 3
End Select
If kolom > 0 Then
Cells(Target.Row, kolom).Resize(, 6).ClearContents: Target.Value = 7.25
Cancel = True
End If
End Sub
Los van de kortere schrijfwijze/snellere berekeningen is het ook consistent. In de methode van @edmoor moet je steeds een nieuwe voorwaarde opnemen als je dagen gaat toevoegen. In het bestandje heb ik mijn 'kladblok' laten staan en wel iets uitgebreid voor de duidelijkheid. Dus eerst analyseren van het werkblad kan efficiëntere code opleveren.Wat of is er een verschil/voordeel van deze code en de code van VenA dan?
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim r As Range
With Target
If .Column <> 1 And .Column Mod 8 <> 2 Then
Set r = Cells(.Row, 3).Offset(, ((.Column - 1) \ 9) * 8).Resize(, 8)
Cells(.Row, 1).Interior.Color = IIf(Application.Count(r) = 0, vbGreen, xlNone)
r.ClearContents
.Value = 7.25
End If
End With
Cancel = True
End Sub
If .Column <> 1 And .Column Mod ([c1].End(xlToRight).Column - 3) <> 2 Then
Set r = Cells(.Row, 3).Offset(, ((.Column - 1) \ ([c1].End(xlToRight).Column - 2)) * ([c1].End(xlToRight).Column - 3)).Resize(, [c1].End(xlToRight).Column - 3)
We gebruiken essentiële cookies om deze site te laten werken, en optionele cookies om de ervaring te verbeteren.