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

barprogramma: excel 2003 code naar 97

Status
Niet open voor verdere reacties.

frank_koreman

Gebruiker
Lid geworden
16 mei 2006
Berichten
107
hallo allemaal,

met veel hulp van LucB, Justus, en enkele anderen op dit forum ben ik bezig geweest een programma te maken die barrekeningen bijhoudt. na dit geheel goed werkend te hebben wilde ik ook een verkoopoverzicht kunnen inzien. dit is toegevoegd in bijgevoegd excel-bestand. de macro' s die hier bij horen werken wel in excel 2003, maar niet in excel 97. en aangezien het programma in excel 97 moet kunnen draaien is mijn vraag of iemand de code zo aan kan passen dat het ook in 97 werkt.

de fout treedt op in Sub NaarTot()

volgens mij kan excel 97 niet overweg met een With in een With. ik denk dat de eerste With eerst beëindigd moet worden, alvorens de tweede With te openen.

zijn er enkele doorzetters die van prutsen houden en hier misschien een oplossing op kunnen bedenken?
 

Bijlagen

Hallo Frank,

Ik heb 2003, dus kan het niet controleren ik heb hem wel gesplist en werkt nog steeds.

Gr Justes
 

Bijlagen

hoi Justus,

ik heb de code van versie B niet per regel vergeleken met versie A, maar volgens mij is er niets veranderd. zo wel, dan werkt het nog steeds niet.
Code:
Public Sub NaarTot()

    Dim Tar    As String
    Dim Val    As Integer
    Dim i      As Integer
    Dim c      As Variant
    Dim Rij    As Variant

    Application.ScreenUpdating = False

    [COLOR="SeaGreen"]With Sheets("HOME")[/COLOR]

        Tar = .Range("D163").Value
        Select Case strMnd
            Case 1
                If Tar = "vt" Then Rij = 3
                If Tar = "rt" Then Rij = 4
            Case 2
                If Tar = "vt" Then Rij = 5
                If Tar = "rt" Then Rij = 6
            Case 3
                If Tar = "vt" Then Rij = 7
                If Tar = "rt" Then Rij = 8
            Case 4
                If Tar = "vt" Then Rij = 9
                If Tar = "rt" Then Rij = 10
            Case 5
                If Tar = "vt" Then Rij = 11
                If Tar = "rt" Then Rij = 12
            Case 6
                If Tar = "vt" Then Rij = 13
                If Tar = "rt" Then Rij = 14
            Case 7
                If Tar = "vt" Then Rij = 15
                If Tar = "rt" Then Rij = 16
            Case 8
                If Tar = "vt" Then Rij = 17
                If Tar = "rt" Then Rij = 18
            Case 9
                If Tar = "vt" Then Rij = 19
                If Tar = "rt" Then Rij = 20
            Case 10
                If Tar = "vt" Then Rij = 21
                If Tar = "rt" Then Rij = 22
            Case 11
                If Tar = "vt" Then Rij = 23
                If Tar = "rt" Then Rij = 24
            Case 12
                If Tar = "vt" Then Rij = 25
                If Tar = "rt" Then Rij = 26
        End Select

        i = 3
        For Each c In Range("Aantallen")
            Val = c.Value
            [COLOR="SeaGreen"]With Worksheets("MaandTot").Cells(Rij, i)[/COLOR]
                .Value = .Value + Val
            [COLOR="Red"]End With[/COLOR]
            i = i + 1
        Next c
    [COLOR="Red"]End With[/COLOR]
Application.ScreenUpdating = True
End Sub

heb je misschien het verkeerde bestand meegestuurd?

in ieder geval bedankt voor je reactie.
 
Met "Opslaan als" kiezen voor
Microsoft Excel 97-Excel 2003 & 5.0/95-werkmap(*.xls)

Zoals bijlage.
Probeer het eens of je het kunt openen met Excel 97?

Pierre
 

Bijlagen

hoi jpvs,

ik heb eerder al eens geprobeerd op deze manier iets voor elkaar te krijgen. dit werkt echter niet (bij mij). het probleem zit 'm in het opslaan klikken na drank en naam gekozen te hebben. dan gaat het fout als het verkoopoverzicht bijgewerkt wordt in Sub NaarTot()
in de regel:

With Worksheets("MaandTot").Cells(Rij, i)

zoals ik al zei denk ik dat het komt door het openen van een With binnen een With. bij het opslaan als excel 97 wordt de code niet aangepast. dus blijft het probleem zich voordoen.

wel bedankt voor je reactie, maar ook dit werkt niet.
 
niemand een idee?

een heel weinig elegante manier is natuurlijk ook iets als;

als "die maaand" en "dat tarief". copy waarde uit cel uit tabel naar andere cel.
en dat rij dan aangeduid wordt met de waarde van de cel waarin net geplakt wordt. dan zijn de twee Withs makkelijk gescheiden.

bijvoorbeeld. in een kolom staan de getallen 1 t/m 26.

de code van Select Case strMnd wordt aangepast. iets zoals;
Case 1
If Tar="vt" Then Worksheets("MaandTot").Range("R3").Copy ' dit is een cel uit de tabel met de waarde 1
Worksheets("MaandTot").Range("N1").PasteSpecial Paste:=xlValues

If Tar="rt" Then Worksheets("MaandTot").Range("R4").Copy
Worksheets("MaandTot").Range("N1").PasteSpecial Paste:=xlValues

Case 2 (maand 2)

in rij R staan dus de getallen 1 t/m 26 en in N1 komt het getal te staan dat later de rij blijkt.

eerst wordt deze With afgesloten met End With

dan wordt de rest van de oorspronkelijke code uitgevoerd waarbij:
Rij=.Range("N1").Value

ik hoop dat het een heel klein beetje duidelijk is. ik heb bovenstaande geprobeerd, maar niet werkend gekregen. de oplossing hoeft ook niet zo omvangrijk te zijn, maar zo vergezocht als dit, zou het bestand wel werkend kunnen krijgen.

ik hoop dat iemand bovenstaand beschreven goed in goede code om kan zetten, of dat iemand een dergelijke of minder omvangrijke oplossing kan verzinnen.

ik hoor het graag
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan