Wat klopt hier niet

Status
Niet open voor verdere reacties.

masala09

Gebruiker
Lid geworden
6 aug 2012
Berichten
886
Ik vind even onderstaande vaag en snap het niet. Het gaat om het vetgedrukte. Als ik .Range ("C28") aan pas in Select dan werkt het weer wel alleen dan kom ik niet direct bij de fout, maar krijg ik een melding voor foutopsporing. Bij het opsporen verschijnt de code en staat het vetgedrukte ge-high light. Wat mij ook opvalt is de ontstane spatie tussen Range en ("C28").

Kan iemand mij uitleg geven?

Code:
Sub Tabblad_Factuur()
'Knop
    Select Case Sheets("Factuur maken").Range("C28")
    Case Is = ""
        Select Case MsgBox("Er is een fout in de opmaak van de factuur." & vbNewLine & vbNewLine & "Controleer of de factuur de volgende gegevens bevat:" & vbNewLine & vbNewLine & " - Factuurtype" & vbNewLine & " - Opvolgend factuurnummer" & vbNewLine & vbNewLine & "Wilt u de fout herstellen?", vbYesNo + vbInformation, "Fout in factuuropmaak")
            Case Is = vbYes
                [B]Sheets("Factuur maken").Range ("C28")[/B]
            Case Is = vbNo
                Exit Sub
        End Select
    Case Else
        Sheets("Factuur").Select
    End Select
    
End Sub
 
Laatst bewerkt:
Ten eerste snap ik je vraag niet.
Wat probeer je te bereiken met de opdracht Sheets("Factuur maken").Range ("C28")?
Ten tweede is de structuur van je Sub nogal onlogisch en slecht leesbaar. Als je antwoord op m'n vraag kunt geven kan ik 'm vast netjes maken voor je.
 
Aanvulling:

In sheet factuur maken staat als volgt:

Code:
Private Sub Worksheet_Activate()

    Select Case frm_003.CheckBox1
    Case Is = True
        Call Notaties
    Case Is = False
        Call Beeld_3 'Module 2
        Call Notaties
    End Select
    
End Sub

Private Sub Notaties()

     'Deze macro is om de celeigenschappen te forceren om zodoende een juiste negeatieve notatie te realiseren
    
    Unprotect "1235"
    Range("G60:I68").Select
    Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
    Range("M60:M68").Select
    Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
    Range("H70:I70").Select
    Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
    Range("F72:F74").Select
    Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
    Range("H74:I74").Select
    Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
    Range("H76:I76").Select
    Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
    Range("L60:L68").Select
    Selection.NumberFormat = "0%"
    [B]Range("D4").Select[/B]
    Protect "1235"
    
    Call Bladbeveiliging 'Module 2

End Sub

Kan het zijn dat in het vetgedrukte van Private Sub Notaties() het probleem zit. Dat er een dubbele verwijzing of iets dergelijks zit?
 
Wat ik ermee probeer te bereiken is dat zodra ik bij de select case op JA klik, dat deze naar de cel van het betreffende tabblad springt. Zo staat de juiste cel van de invoerlijst meteen geselecteerd.

Deze invoerlijst (overigens geen formulier), is om de gegevens van de factuur in te stellen. Hierna wordt een ander tabblad met de juiste opzet van de factuur automatisch ingevuld die ik vervolgens weer kan opslaan en uitprinten.

Overigens moet de Msgbox opkomen op het moment dat er geen gegevens staan in cel C28 van tabblad Factuur maken. Staan er wel gegevens in dan word het Msgbox overgeslagen en wordt het ingevuld tabblad Factuur geopend.

Het is eigenlijk een soort controle.

Wat is onduidelijk dan in de opstelling?
 
Laatst bewerkt:
Wat ik ermee probeer te bereiken is dat zodra ik bij de select case op JA klik, dat deze naar de cel van het betreffende tabblad springt.

Dan moet je de cel wel selecteren of activeren. Nu benoem je hem alleen maar.
Code:
     Sheets("Factuur maken").Range("C28").Select
Code:
     Sheets("Factuur maken").Range("C28").Activate
Pak een variant.
 
Nooit gehoord van - Vermijd 'Select' en 'Activate' in VBA - ?
Dit is genoeg:

Code:
Sub M_snb()
    Range("G60:I68,M60:M68,H70:I70,F72:F74,H74:I74,H76:I76").NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
end sub
 
Beste allen. Dank voor jullie antwoorden.

OctaFish, Activate of select heb ik achter deze code nog nooit gebruikt en het werkt overal. Telkens als er naar een tabblad gegaan wordt dan wordt de betreffende cel direct geselecteerd en kan ik verder.

Het gaat er mij om, waarom de code in deze nu niet werkt. Wat er dus niet aan klopt. Is dat omdat er een soort kringverwijzing in zit of omdat er nog een code achter het bewuste tabblad zit die aan het eind van die sub juist een andere cel D4 selecteert.

SNB. Ik had de bewuste code opgemaakt via de recorder. Had je misschien al gezien. Omdat het werkte, het laat was, ik hierna niet veel zin meer had en omdat het zijn werk deed, heb ik het zo gelaten. Jij maakt de verkorte versie ervan. Hoewel ik beslist niet twijfel aan jou kunnen en jij hiernaar verwijst, vraag ik mij toch af of dit dan het probleem kan zijn. Dit voordat ik de zaken wijzig.

Tweede vraag aan jou SNB, waarom eigenlijk geen select of activate gebruiken als deze door VBA zelf ook worden gebruikt?

Ik gebruik excel 2007 en VBA 6???
 
Code:
Sub Tabblad_Factuur()
'Knop
    If Sheets("Factuur maken").Range("C28") = vbNullString Then
        If MsgBox("Er is een fout in de opmaak van de factuur." & vbNewLine & vbNewLine & _
                  "Controleer of de factuur de volgende gegevens bevat:" & vbNewLine & vbNewLine & _
                  " - Factuurtype" & vbNewLine & " - Opvolgend factuurnummer" & vbNewLine & vbNewLine & _
                  "Wilt u de fout herstellen?", vbYesNo + vbInformation, "Fout in factuuropmaak") = vbYes Then
            Application.Goto Sheets("Factuur maken").Range("C28"): Exit Sub
        Else
            Exit Sub
        End If
    Else
        Application.Goto Sheets("Factuur").Range("A1")
    End If
    
End Sub
 
en dan nog de redundantie eruit halen:

Code:
Sub Tabblad_Factuur()
    If Sheets("Factuur maken").Range("C28") = vbNullString Then
        If MsgBox(replace("Er is een fout in de opmaak van de factuur.~"Controleer of de factuur de volgende gegevens bevat:~- Factuurtype~- Opvolgend factuurnummer~Wilt u de fout herstellen?","~",vblf), vbYesNo + vbInformation, "Fout in factuuropmaak") = vbYes Then Application.Goto Sheets("Factuur maken").Range("C28")
     Else
        Application.Goto Sheets("Factuur").Range("A1")
    End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan