end with met voorwaarde mogelijk?

Status
Niet open voor verdere reacties.

KimVH

Gebruiker
Lid geworden
23 jan 2008
Berichten
10
Hallo,

In mijn excel bestand heb ik 3 kolommen met cijfers, het gaat over kolommen D, E en F. Als het cijfer echter gelijk is aan nul, dan is de cell blanco.
Ik wil in de blanco cellen nulletjes zetten.

Code:
Sub t_Zero_for_Empty()
'
' g_Zero_for_Empty Macro
' Zero where there is no number
'

'
    With Worksheets("Sheet1").Range("D:F")
    For Each cell In Range("D:F")
        If cell.Value = "" Then cell.Value = 0
    Next cell
    End With
    Range("A1").Select
End Sub

Met dit proces worden uiteraard de gehele kolommen D, E en F doorzocht op blanco cellen en krijg ik uiteindelijk meer dan 65.000 rijen, omdat de niet-gebruikte cellen onderaan ook worden doorzocht.
Maar ik had graag een stop gezet op dit proces, want zolang er iets in kolom A staat, zou het proces moeten lopen. Van zodra kolom A leeg is, moet het stoppen.
Ik ken niks van VBA, dus ik kan jullie hulp gebruiken.
Kan ik een voorwaarde verbinden met de 'End With'? Of moet het anders?

Alvast bedankt,

Kim
 
Kan je ook zonder VBA doen, namelijk:

In Excel-bestand:
1) Klik het menu 'Extra' aan
2) vervolgens 'Opties'
3) vervolgens onder tabblad 'Weergave' de 'Nulwaarden' aanvinken

Als je nu een 0 invult in een cel dan verschijnt er ook 0
 
Ik heb even moeten zoeken, want ik heb hier Excel 2007.
Maar die optie blijkt al aangevinkt te zijn, tot mijn grote verbazing, want jouw suggestie leek mij een perfecte oplossing.

Misschien helpt dit: mijn bestand is een export uit Access.
Moet ik iets in Access gaan veranderen, misschien is dat een oplossing?

Bedankt voor de zeer snelle reactie ;)

Kim
 
Ik heb even moeten zoeken, want ik heb hier Excel 2007.
Maar die optie blijkt al aangevinkt te zijn, tot mijn grote verbazing, want jouw suggestie leek mij een perfecte oplossing.

Misschien helpt dit: mijn bestand is een export uit Access.
Moet ik iets in Access gaan veranderen, misschien is dat een oplossing?

Bedankt voor de zeer snelle reactie ;)

Kim

Dus begrijp eigenlijk dat je waarden vanuit een access-bestand verzet naar de excel-kolommen ?
Dat betekent dus dat VBA (als je dit d.m.v. VBA doet) ook lege-celwaarden overneemt. Als dit zo is dan moet je zorgen dat die specifieke VBA-code geen lege-cellen overneemt.
 
De export van Access naar Excel doe ik in Access zelf, dat gaat via een soort wizard.
Maar die vermeld niks over nulwaarden. Maar misschien kan ik iets in Access zelf doen.
Hierover heb ik ook weinig kennis.
 
De export van Access naar Excel doe ik in Access zelf, dat gaat via een soort wizard.
Maar die vermeld niks over nulwaarden. Maar misschien kan ik iets in Access zelf doen.
Hierover heb ik ook weinig kennis.

Kan je anders een voorbeeld bestand plaatsen, kan ik even kijken naar de voorwaarde.
 
Sorry, maar kan het bestand niet openen. Wil je het Excel-bestand in een 'Zip'-bestand plaatsen ?

En evt. ook in een Excel versie vóór 2007. Al ken ik ook zelf niet echt heel veel van Access.

Wigi
 
Laatst bewerkt door een moderator:
Als je er niet uitkomt via Acces kan je de code ook altijd wijzigen zoals hieronder aangegeven.

Code:
Sub TypeZero()

    Dim mijnRij As Long
    
    For mijnRij = 1 To 65536
        If Cells(mijnRij, 1) <> "" Then
            If Cells(mijnRij, 4).Value = "" Then Cells(mijnRij, 4).Value = 0
            If Cells(mijnRij, 5).Value = "" Then Cells(mijnRij, 5).Value = 0
            If Cells(mijnRij, 6).Value = "" Then Cells(mijnRij, 6).Value = 0
        Else
            Exit For
        End If
    Next mijnRij
    
End Sub

Gr K
 
Sub Empty_To_Zero()

Application.Calculation = xlCalculationManual

Dim c As Range
For Each c In Sheet1.UsedRange.Columns(1).Cells

If Not c.Value = "" Then
If c.Offset(0, 5) = "" Then c.Offset(0, 4) = 0
If c.Offset(0, 6) = "" Then c.Offset(0, 5) = 0

End If

Next c

Application.Calculation = xlCalculationAutomatic
End Sub

gr eric cirkel
 

Bijlagen

Als je er niet uitkomt via Acces kan je de code ook altijd wijzigen zoals hieronder aangegeven.

Code:
Sub TypeZero()

    Dim mijnRij As Long
    
    For mijnRij = 1 To 65536
        If Cells(mijnRij, 1) <> "" Then
            If Cells(mijnRij, 4).Value = "" Then Cells(mijnRij, 4).Value = 0
            If Cells(mijnRij, 5).Value = "" Then Cells(mijnRij, 5).Value = 0
            If Cells(mijnRij, 6).Value = "" Then Cells(mijnRij, 6).Value = 0
        Else
            Exit For
        End If
    Next mijnRij
    
End Sub

Gr K

Ik heb dit geprobeerd en het werkt, Dank u!!!

Sub Empty_To_Zero()

Application.Calculation = xlCalculationManual

Dim c As Range
For Each c In Sheet1.UsedRange.Columns(1).Cells

If Not c.Value = "" Then
If c.Offset(0, 5) = "" Then c.Offset(0, 4) = 0
If c.Offset(0, 6) = "" Then c.Offset(0, 5) = 0

End If

Next c

Application.Calculation = xlCalculationAutomatic
End Sub

gr eric cirkel

Deze heb ik ook geprobeerd, maar het gaf een error: Run-time error '424': Object required
Het gaat blijkbaar over die 'c'.

In ieder geval, heel erg bedankt voor jullie voorstellen, ik ben er uit geraakt.

Kim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan