Excel VBA. Blok cellen verwijzen/kopieren naar een ander blad

Status
Niet open voor verdere reacties.

KPTPTT

Gebruiker
Lid geworden
2 mrt 2018
Berichten
321
Hallo,
Voor een offerte heb ik verschillende tabbladen, bv. Keuken, Woonkamer, etc., met blokken items. Ik wil uit (ieder) tabblad het blok items kopiëren naar het blad Offerte. De blokken van ieder blad moeten onder elkaar op het blad Offerte komen te staan.

Ik heb de volgende code getest doch er wordt slechts maar één kolom naar blad Offerte gekopieerd en niet een heel blok met rijen en kolommen (van A4 tot en met F4 en n-aantal rijen). Het blok moet in blad Offerte in een blok cellen vanaf
A14 tot F14 worden gekopieerd. Hoe kan ik het volledige blok cellen kopiëren ipv. maar één kolom? Alvast bedankt.

PHP:
Sheets("Offerte").Range("A14:F14").End(xlDown).ClearContents    'Vorige offerte wordt gewist voordat een nieuwe op blad Offerte wordt geschreven.
              
        Sheets("Keuken").Range("A4:F4", Sheets("Keuken").Range("A1000:F1000").End(xlUp)).AdvancedFilter _
        Action:=xlFilterCopy, CopyToRange:=Sheets("Offerte").Range("A14:F14"), Unique:=True
 
Gebruik de eigenschap 'currentregion'; zie F1 in de VBEditor.
 
Excel VBA. Conversie kolom cellen Boolean waarde naar Binaire waarde

De andere twee vragen zijn beantwoord, heb de antwoorden toegepast en de helpers bedankt voor de hulp. Ik begrijp niet wat je bedoelt met :"Bestand plaatsen . . ."' Als je bedoelt dat ik het bestand moet plaatsen als voorbeeld, is dat een lastige (via internet waar ieder meekijkt) en heb dat aangegeven. De antwoorden van een ieder hebben mij geholpen en is de vraag opgelost. Voor het afsluiten van de vraag zie ik vooralsnog geen knop op deze site. Ik zou graag antwoord op onderstaande vraag krijgen.
 
Maak een voorbeeldbestand met twee bladen met wat je wil en hoe het er uit ziet bij jou.

Je vragen op opgelost zetten kun je in je openingsvraag doen,
 
Bedankt HSV.
Bijgaande een testbestand. Ik wil een blok cellen van blad Keuken en daarna een blok van blad Voorkamer onder elkaar kopiëren naar blad Offerte. Blok Keuken kopiëren lukt, van blok Voorkamer wordt de naam van het blad niet herkent en werkt het kopiëren op de plaats van de laatste regel na blok Keuken niet. De laatste regel wordt door code bepaalt en op het scherm getoond. Zie de comments in de code
Ik heb in een andere VBA code de bladnamen Keuken en Voorkamer volop toegepast en geen problemen ondervonden. In dezelfde code, in de uitbreiding met de nieuwe statements is het nu wel een probleem, vreemd.

Vragen: Waarom wordt blad Voorkamer niet herkend en blad Keuken wel. (Ik heb voor een test Voorkamer veranderd in Keuken)
Hoe kan ik in het statement < sheets("Offerte").Range (xxx) > de waarde (lastRow) ~(xxx) van de laatste regel aangeven.

Bekijk bijlage Test offerte 1.xlsm
 
Bij mij zou zo'n offerte direct bij het oud papier belanden. Een range bestaat uit rijen en kolommen als je een variabele gebruikt dan moet je deze niet tussen "" zetten.

Iets eenvoudiger.

Code:
Sub VenA()
  With Sheets("Offerte")
    .UsedRange.Offset(4).Clear
    For Each sh In Sheets(Array("Keuken", "Voorkamer"))
      sh.Range("A4:F" & sh.Cells(Rows.Count, 1).End(xlUp).Row).Copy .Cells(Application.Max(13, .Cells(Rows.Count, 1).End(xlUp).Row), 1).Offset(1)
    Next sh
  End With
End Sub

Nb. Plaats voorbeeldbestanden obv het echte bestand.
 
VenA, hartelijk dank voor je hulp. In deze "wereld" stelt men geen prijs op een "echte" offerte, vandaar. Top, je compacte oplossing werkt als een speer hoewel ik de code nog niet zo begrijp. Ik ga dat verder uitzoeken. Het is wel zo dat ik in de definitieve applicatie meer dan 25 sheets heb. Ik ga er van uit dat ik in de "for each" statement de namen van de sheets kan uitbreiden. Het is mij nog een raadsel waarom bij jou de bladnaam wel wordt herkend en bij mij niet.

Ik heb door het kopiëren van de sheets nu een volgend probleem, misschien heb je een oplossing. Ik heb een tab Prijzenblad. In de tabs bv. Keuken, Voorkamer etc. verwijzen de rijen cellen per werkzaamheid naar een Prijzenblad om de prijs te bepalen
(bv. =Prijzenblad!G237). Dat gaat goed. Maar, door het kopiëren van deze cellen naar bad Offerte veranderd in blad Offerte de verwijzing naar een heel andere cel op het prijzenblad (wordt =Prijzenblad!G334. De zaak verschuift. Dus Voorkamer verwijst naar Prijzenblad en blad Offerte is een kopie van Voorkamer en daarmee indirect een verwijzing naar Prijzenblad. Ik kan dit met enorm veel werk aanpassen door de verwijzing naar het prijzenblad absoluut te maken (=Prijzenblad!$G$237) maar daarmee verdwijnt de flexibiliteit en is ontzettend veel werk, is er een andere manier (bv in je code) of weet je een andere oplossing? Alvast bedankt.
 
Laatst bewerkt:
In welke wereld leef je dan? Meer dan 25 sheets? Maak je offertes voor paleizen of steekt de hele handel niet logisch in elkaar?
 
Haha, renovatie en dat zijn heel wat items die in verschillende (binnen/buiten)ruimten uitgevoerd moeten worden. Je levert een offerte in de vorm van een kostenblad. Is mijn vraag omtrent de kopie je duidelijk?
 
Ik heb geen idee waar je het over hebt. Oh je hebt de vraag aangepast lekker handig. Bedenk eerst maar eens wat het allemaal moet worden en kom met een fatsoenlijk voorbeeldbestand.
 
Van het één komt het ander. Door het kopiëren gaan de verwijzingen naar een andere blad niet goed. De vraag kon ik in een nieuw item zetten maar dan is de link met het kopiëren weg en dat was ook niet handig, sorry. Ik probeer het probleem op te lossen. Dank.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan