Kleine wijziging voor controle dat alle cellen zijn ingevuld

Status
Niet open voor verdere reacties.

masala09

Gebruiker
Lid geworden
6 aug 2012
Berichten
886
Beste allen.

Na een tijdje zelfstandig stoeien ben ik uit mijn vorige vraag gekomen en kan ik bijna de zaken toevoegen tot mijn eerder gemaakt bestand.

Echter zit ik nog met een klein probleempje. Ik had het al geprobeerd op onderstaande manier, maar dan krijg ik een foutmelding.

Het is de bedoeling dat alle cellen van range A12 tot en met G12 zijn ingevoerd. Is dit niet het geval dan mag de code niet uitgevoerd worden. Zodra dit wel het geval is dan mag de code wel uitgevoerd worden.

Code:
Sub Artikel_Toevoegen()

Select Case Cells.Range("A12:G12")
    Case Is = vbNullString
        MsgBox ("Voor deze opdracht heeft u te weinig gegevens ingevoerd." & vbNewLine & vbNewLine & "Voer alle waarden in."), vbExclamation, "Geen Waarde"
        Exit Sub
    Case Else
        With Sheets("Opmaak")
            .Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 7) = Array(.Range("B5") + 1, _
            .Range("B12"), .Range("C12"), .Range("D12"), .Range("E12"), .Range("F12"), .Range("G12"), .Range("H12"), _
            .Range("I12"))
            
            Sheets("Opzet").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 7) = Array(.Range("B5") + 1, _
            .Range("B12"), .Range("C12"), .Range("D12"), .Range("E12"), .Range("F12"), .Range("G12"), .Range("H12"), _
            .Range("I12"))
        End With
    
        With Sheets("Opzet")
            .Range("A65000").End(xlUp).Offset(1).Resize(, 7).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        End With
    
        Range("A12:B12,C12,D12,E12,F12,G12,H12").Select
        Selection.SpecialCells(xlCellTypeConstants, 23).ClearContents
        Range("A12").Select
    End Select
    
End Sub
 
Laatst bewerkt:
Code:
if range("a12:g12").specialcells(2).count = 7 then
...wel
else
...niet
end if
 
Of
Code:
    If WorksheetFunction.CountA(Range("A12:G12")) <> 7 Then
        MsgBox ("Voor deze opdracht heeft u te weinig gegevens ingevoerd." & vbNewLine & vbNewLine & "Voer alle waarden in."), _
        vbExclamation, "Geen Waarde": Exit Sub
    Else
        ...
    End If
 
Toch even een nieuwsgierig vraagje.

De code

Selection.SpecialCells(xlCellTypeConstants, 23)

Ik vraag mij af waar die 23 voor staat. Met andere waarden doet de code het namelijk niet.
 
Kijk eens in de VBA-help bij SpecialCells vooral bij XlSpecialCellsValue-constanten. 23 is de optelling van al deze constanten.
Uit de VBA-help.
Als Type gelijk is aan xlCellTypeConstants of xlCellTypeFormulas, wordt dit argument gebruikt om te bepalen welke celtypen moeten worden opgenomen in het resultaat. Deze waarden kunnen bij elkaar worden opgeteld om meer dan een type als resultaat te geven. Met de standaardinstelling worden alle constanten of formules geselecteerd, ongeacht het type.
 
Rudi bedankt. Vandaar dat ik die dus niet kon vinden. Ik had al gekeken in het help menu. Maar nu je het schreef viel het mij op.... 23 is dus feitelijk gewoon alles.
 
je kunt ook het aantal lege cellen berekenen:

x3 = [sum(N(isblank(A12:G12)))]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan