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

Formuleuitkomst kopieren en wissen met VBA

Status
Niet open voor verdere reacties.

Gotty

Gebruiker
Lid geworden
16 sep 2004
Berichten
496
Beste mensen,

Ik heb hier een excel-bestand (*.xlsm), en daarmee wil ik “tags” kunnen maken in de vorm van tekst.

Na het downloaden van het bestand zie je dat het mogelijk is om bestaande tags toe te voegen in cel C1 gescheiden door een spatie. In de lijst kan ik nieuwe tags kiezen door een willekeurige waarde in de lijst te zetten vanaf cel C6 t/m C70. Kolom D gebruik ik als hulpkolom. Dit hoeft van mij ook niet chiquer.

Als ik een nieuwe tag heb toegevoegd wordt deze weergegeven in cel C3, deze uitkomst zou ik dan graag willen kopieren naar het klembord om de tekst ergens anders te kunnen plakken. Hierdoor kan de formule in cel C3 gewoon blijven staan. Maar het knopje “Kopiëren” krijg ik niet aan de praat.

Als de tags ergens geplakt zijn zou ik de waardes in de cellen C1, C3 en C6 t/m C70 willen wissen, deze knop werkt wel maar zodra ik ga prutsen met de knop “Kopiëren” werken ze allebei niet meer.

Ik hoop dat iemand mij hiermee kan helpen.

Ik werk met Office for Mac, maar excelbestanden van Windows worden gewoon ondersteund en andersom ook geloof ik.

Bekijk bijlage Bestandsnamen maken.xlsmBekijk bijlage Bestandsnamen maken.xlsm
 
Bedoel je zoiets?

Code:
Sub VenA()
Dim cl As Range, c00 As String
With Sheets("Blad1")
  For Each cl In .Range("D6:D70")
    If cl <> "" Then c00 = c00 &  cl
  Next cl
  .Range("C1:AN1,C6:C15,C17:C24,C26:C32,C34:C41,C43:C46,C48:C51,C53:C56,C58:C61,C63:C70").ClearContents
  With .Range("C3")
    .Value = Mid(c00, 2)
    .Copy
  End With
End With
End Sub
 
Laatst bewerkt:
Bedoel je zoiets?

Code:
Sub VenA()
Dim cl As Range, c00 As String
With Sheets("Blad1")
  For Each cl In .Range("D6:D70")
    If cl <> "" Then c00 = c00 &  cl
  Next cl
  .Range("C1:AN1,C6:C15,C17:C24,C26:C32,C34:C41,C43:C46,C48:C51,C53:C56,C58:C61,C63:C70").ClearContents
  With .Range("C3")
    .Value = Mid(c00, 2)
    .Copy
  End With
End With
End Sub

Hoi VenA,

Allereerst bedankt voor je hulp. Als ik echter de code in vba zet komt er het volgende bestand uit: Bekijk bijlage Bestandsnamen maken 2.xlsm. Maar de knoppen doen het niet.

Om de range die gewist moet worden achter elkaar te zetten was een goeie dus ik heb onderstaand bestand. Alleen bij mij krijg ik die code's niet trapsgewijs, maar zo te zien maakt dat niets uit. Bekijk bijlage Bestandsnamen maken 3.xlsm.

Ik hoop dat je me nog verder kunt helpen.
 
Je moet niet alleen de code plakken, maar de code nog aan de knop hangen doordat de sub een andere naam heeft.
Code:
Sub hsv()
With Sheets("Blad1").Range("c3")
   .Value = Replace(Join(Filter([transpose(if(d6:d70>0,d6:d70,"~"))], "~", False), "~"), "~", "")
   .Parent.Range("C1:AN1").ClearContents
   .Parent.Range("C6:C70").ClearContents
   .Copy
End With
End Sub
 
Je moet niet alleen de code plakken, maar de code nog aan de knop hangen doordat de sub een andere naam heeft.
Code:
Sub hsv()
With Sheets("Blad1").Range("c3")
   .Value = Replace(Join(Filter([transpose(if(d6:d70>0,d6:d70,"~"))], "~", False), "~"), "~", "")
   .Parent.Range("C1:AN1").ClearContents
   .Parent.Range("C6:C70").ClearContents
   .Copy
End With
End Sub

Hoi hsv,

Jij ook bedankt voor je hulp. Ik heb je code in het bestand geplakt en ik snap nu ook hoe ik een knop moet linken aan een code, toen ik dat gedaan had klikte ik op "kopieren" en de waarden in de gehele kolom C werden netjes gewist, alleen de formule in C3 werd ook gewist en de opmaak van cel C3 wordt gekopieerd in plaats van de waarde => formuleuitkomst.

In een oud topic over hetzelfde bestand vond ik een code waarmee de formuleuitkomst in C3 wél gewist kan worden zonder dat dat ten koste gaat van de formule zelf, de opmaak wordt niet gekopieerd maar de formuleuitkomst ook niet. Ik praat over onderstaande code:

Code:
Sub tst()
 With Sheets("Blad1")
  .Range("C6:C70").ClearContents
 End With
End Sub

Ik zou dit dolgraag zelf doen maar ik heb vba zó weinig nodig dat het niet loont om al die boeken door te spitten, ik hoop dat jullie me nog verder kunnen helpen na aanlevering van onderstaande code.
 
Dat heb je met Copy; alles wordt dan geplakt.
Doe plakken speciaal → waarden.

Dat de formule in c3 verdwijnt is niet erg. heb je niet nodig bij de code.
 
Beste hsv,

Op de een of andere manier weet ik mij niet duidelijk uit te drukken, ik stel voor om bij het begin te beginnen, en stapje voor stapje voorwaarts te gaan.

Ik heb het volgende bestand, Bekijk bijlage Tags maken.xlsm Ik zou graag de waarde in C3 willen kopiëren, dat wil met de huidige VBA-code in zoverre dat als ik op de knop "kopiëren" klik, de eerste letter van de eerst gekozen tag verdwijnt, verder verdwijnt de formule in C3, maar deze wil ik graag behouden omdat deze de gekozen tags samenstelt. Uiteraard sta ik open voor alternatieven.

Ik hoop dat jullie mij hiermee kunnen helpen.
 
Waar plak jij de formule naar toe dan?
Stel ik plak de formule in kolom K, dan worden alle verwijzingen in de formule naar kolom D veranderd in L.
 
Ik heb er een filmpje van gemaakt hsv, deze is hier te bekijken.


In het filmpje laat ik eerst zien dat C3 is voorzien van een formule die alle nieuwe tags aan elkaar plakt.

Daarna kies ik een aantal tags en je ziet dat deze door de formule in C3 naast elkaar worden gezet.

Daarna klik ik op de knop ”kopiëren” om de gekozen tags op het klembord te kunnen zetten.

Je ziet ook dat er van die “mieren” rondom C3 heen lopen. De waarden in C6 t/m C70 verdwijnen dus dat gaat al heel goed maar dat komt later wel.

De tags die ik zojuist heb gekopiëerd wil ik nu ergens plakken, nu doe ik dat voor het gemak even in het bestand zelf.

Dan laat ik zien dat C3 niet meer is voorzien van een formule.

Als laatste zie je dat de eerst gekozen tag in de lijst het woord “van” is en de eerste woorden in C3 en K10 zijn ”an


Ik hoop dat je er wat mee kunt.
 
Waarom moet de formule behouden blijven.
Wil je de cel met formule en al kopiëren?

Zie dan mijn vorig schrijven van kolomletter verandering.
 
Waarom moet de formule behouden blijven.
Wil je de cel met formule en al kopiëren?

Zie dan mijn vorig schrijven van kolomletter verandering.

Ik hoef de cel niet met formule en al te kopiëren, maar ik kan me erg goed voorstellen dat ik de formule in C3 nodig heb om alle tags samen te stellen. En dat ik dan de waarde van C3 kan kopiëren. Als je een alternatief hebt hoor ik het graag.
 
Die staan er al.
Het samenstellen wordt gedaan in de code i.p.v. met de formule.
 
Ik heb nog wat zitten sleutelen, en ik ben er hardstikke blij mee, hartelijk dank voor de hulp!!

Vroeger, klikte je altijd op een knop als een vraag was opgelost, maar die knop zie ik niet meer, maar als ik toch nog iets moet doen hoor ik het graag.
 
Laatst bewerkt:
Als ik me niet vergis staat die knop in je openingsvraag.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan