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

Opmaak van een veld wordt wordt niet meegenomen bij het kopieren in vba. Reden?

Status
Niet open voor verdere reacties.

linkav

Gebruiker
Lid geworden
13 jun 2007
Berichten
465
Allen,

In een macro ga ik een aantal cellen kopieren van het ene tabblad naar het andere tabblad. Sommige velden hebben een opmaak en deze opmaak wordt niet meegenomen naar het doel-tabblad.

Wat kan hiervan de oorzaak zijn?

Gebruikte code:
Code:
            Sheets(tmpSysVKPrijzenNaamTab).Select
            Range("C" & tmpRowVKPrijzen & ":G" & tmpRowVKPrijzen).Select
            Selection.Copy
            Sheets(tmpSysPrijslijstNaamTabAlles).Select
            Range("D" & tmpRowPrijslijst).Select
            ActiveSheet.Paste
 
Ik vermoed dat de opmaak een voorwaardelijke opmaak is.
Doordat je kolom C:G van blad1 verplaatst naar D:H van blad2 horen de waarden niet meer bij de gegevens van de voorwaardelijke opmaak.
 
Hallo Harry,

Het gaat niet om voorwaardelijke opmaaK.
De cellen zijn opgemaakt door in de cel te gaan staan en dan een achtergrond kleur te geven, het lettertype aan te passen, ....
 
Dat zou dan gewoon moeten werken, al kan de code wel iets beter, maar dit terzijde.
 
Bv.
Code:
Sheets(tmpSysVKPrijzenNaamTab).Range("C" & tmpRowVKPrijzen).resize(,5).Copy Sheets(tmpSysPrijslijstNaamTabAlles).Range("D" & tmpRowPrijslijst)
 
Dat ziet er inderdaad beter uit...
Ik ga dit eens uittesten.

Bedankt!!!
 
Hallo Harry,

Met de code
Code:
Sheets(tmpSysVKPrijzenNaamTab).Range("C" & tmpRowVKPrijzen).Resize(, 5).Copy Sheets(tmpSysPrijslijstNaamTabAlles).Range("D" & tmpRowPrijslijst)

wordt de opmaak ook niet mee gekopieerd...
 
Dat wist ik al, doet precies hetzelfde als je eigen.
Plaats anders het bestand.
 
Best,

In bijlage een voorbeeld.

Als op het tabblad "daschboard" op de knop "maak prijslijsten" geklikt wordt, wordt vanuit het het calculatie-tabblad "Berekening VK prijzen"de prijslijsten gemaakt. Op het tabblad"Berekening VK prijzen" staan op regel 6,12 en 25 titels met een bepaalde opmaak. Bij het kopieren naar de prijslijsten wordt de opmaak niet meegenomen. Wat kan de oorzaak zijn?
 

Bijlagen

  • PrijsberekeningKort.xlsm
    1,4 MB · Weergaven: 47
De code stopt ook na de msgbox door Exit Sub.
 
Wat bedoel je hiermee? Na de exit sub staat toch geen opmaak van de cellen?
 
Verder dan de Exit Sub komt de code hier niet.


Code:
Sub Knp_Maak_Prijslijsten()
On Error GoTo err_Knp_Maak_Prijslijsten
    Application.ScreenUpdating = False
    
    tmpSysPrijslijstNaamTabLeeg = Range("Parameters!SysPrijslijstNaamTabLeeg")
    tmpSysPrijslijstNaamTabAlles = Range("Parameters!sysPrijslijstNaamTabAlles")
    tmpSysPrijslijstNaamTabEindgebruiker = Range("Parameters!sysPrijslijstNaamTabEindgebruiker")
    tmpSysPrijslijstNaamTabGrooth = Range("Parameters!sysPrijslijstNaamTabGrooth")
    tmpSysPrijslijstNaamTabEindgebrGrooth = Range("Parameters!sysPrijslijstNaamTabEindgebrGrooth")
    tmpSysPrijslijstNaamTabEindgebrGroothVar = Range("Parameters!sysPrijslijstNaamTabEindgebrGroothVar")
    
    Application.DisplayAlerts = False
    On Error Resume Next
        Sheets(tmpSysPrijslijstNaamTabLeeg).Visible = True
        Sheets(tmpSysPrijslijstNaamTabLeeg).Select
        If Err.Number <> 0 Then
            Beep
            msg = "Tabblad 'Prijslijst Leeg' niet gevonden........"
                   Style = vbOKOnly + vbExclamation
                   Title = "Controle invoer"
                   Answer = MsgBox(msg, Style, Title, Help, 64)
[COLOR=#0000cd]            Exit Sub
[/COLOR]    End If
    On Error GoTo err_Knp_Maak_Prijslijsten
..........
.........
........

En daar zie ik geen kopieeractie tussen staan.
 
Beste Harry,

In dat stukje code staat inderdaad geen kopie commando, dat staat verder in de code. Het programma komt, in tegenstelling tot wat jij zegt, wel voorbij de 'exit sub'-regel.Het programma komt enkel in het gedeelte met de 'exit sub'-regel als err.number<>0.
Indien 'Sheets(tmpSysPrijslijstNaamTabLeeg).Visible = True' een fout geeft (err.number<>0) wil dit zeggen dat het tabblad niet gevonden, er wordt een foutmelding getoond en de uitvoering van het programma wordt gestopt.

Het probleem van het kopieren zonder opmaak is opgelost.

Bedankt allemaal voor jullie reacties
 
Dus ik had eerst zelf even een tabblad aan moeten maken alvorens ik verder kon met de code.
Die had ik niet voorzien met mijn kennis van Vba. :p

Ik weet niet in hoeverre jouw kennis reikt, vandaar dat ik je daarop attendeer dat het niet aan de kopieeractie toekomt.
Misschien is het beter dat je in het vervolg zorgt dat alles aanwezig is in wat de code allemaal tegen komen kan.

Uiteraard mag je altijd even de oplossing plaatsen voor geïnteresseerden.
 
Beste Harry,

Neen, je had niet eerst het tabblad moeten aanmaken. De code controleert of het tabblad er is, zoja wordt het verwijderd.
Mijn kennis van vba is niet super, maar ik kan uit de code nog wel uit maken dat hij wel verder gaar met de code en er niet uit gaat bij de exit sub.

Volgens mij is de volledige code aanwezig in het voorbeeld wat ik doorgestuurd had.

In bijlage de aangepaste versie na het vinden van het foutje.

Bekijk bijlage PrijsberekeningKort.xlsm
 
Helaas haak ik af, of het moet na het vinden van je foutje opgelost zijn.
De code is dusdanig dat het niet verder komt dan de msgbox "Tabblad prijslijst leeg" niet gevonden, gevolgd door Exit Sub.
Ik heb twee keer op de knop in tabblad Dashboard gedrukt en de code doorlopen met F8.

Helaas heb ik geen tijd en de zin om het helemaal voor je uit te pluizen, en gaat tenslotte maar een copy actie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan