Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: excel vba  (gelezen 36394 keer)

0 leden en 1 gast bekijken dit topic.

Offline team roy

  • Lid
  • *
  • Berichten: 60
  • Geslacht: Man
  • Oplossing.be
excel vba
« Gepost op: 15 juli 2019, 22:25:48 »
Goedendag,

Is er iemand die mij kan helpen met excel vba a.u.b.?
Ik heb middels jullie weten achterhalen hoe je in cel a1 van een werkblad een naam kan vermelden en dat dezelfde naam in de benaming van het werkblad verschijnt: ActiveSheet.Name = Range("a1").Value. Bijvoorbeeld werkblad met de naam "Test".

In werkblad Test zou ik data willen copieeren en plakken van een ander werkblad. Ik zou dan moeten plakken in Sheets("test").select maar kan dat automatisch? Dat ik "test" niet zelf hoef te schrijven?

Voorbeeld range a17:i32 copieeren van sheet dat Static Data heet:
    Sheets("static data").Select
    Range("A17:I32").Select
    Selection.Copy
    Sheets("test").Select



Alvast bedankt.


mvg,
Roy

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.169
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: excel vba
« Reactie #1 Gepost op: 15 juli 2019, 22:40:35 »
Hallo team roy,

Welkom op Oplossing.be  :)

goede vraag, maar.... je moet toch een bestemming kiezen, anders gaat het niet.

Je kan in je werkblad "test" een bereik "benoemen" (een Range een naam geven) maar dan moet je nog steeds de naam van dat bereik ingeven als bestemming, dat helpt dus niet veel.

In je voorbeeldcode vermeld je niet waar in tabblad test de gekopieerde data moet komen, in welke cel er moet worden begonnen met plakken, of in welke "range".

Ik zou de macro uitvoeren terwijl je in werkblad "test" bent met volgende VBA-code:

Sheets("static data").Range("A17:I32").copy destination:=Range("A17")
Deze manier vereenvoudigd de code enorm.

Test  ;D dit eens even uit.... en laat weten of het voldoet aan je verlangens.

Groeten,

:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline emields

  • Ervaren lid
  • ***
  • Berichten: 257
  • Geslacht: Man
  • Oplossing.be
Re: excel vba
« Reactie #2 Gepost op: 15 juli 2019, 23:48:17 »
beter is het op een voorbeeldbestandje duidelijk te maken wat je naar waar wil kopiëren

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.169
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: excel vba
« Reactie #3 Gepost op: 16 juli 2019, 10:25:51 »
beter is het op een voorbeeldbestandje duidelijk te maken wat je naar waar wil kopiëren
?????
Ik ben ook voorstander van voorbeeldbestandjes, maar dit lijkt mij toch een heel duidelijke vraag, met code.
Daar kon zelfs ik, als NIET-Specialist een antwoord op geven zonder het te testen in Excel...  0:-)

:) SoftAid :)             

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline team roy

  • Lid
  • *
  • Berichten: 60
  • Geslacht: Man
  • Oplossing.be
Re: excel vba
« Reactie #4 Gepost op: 16 juli 2019, 12:01:04 »
Hallo allen,

Dank voor jullie reply. mocht ik niet al te duidelijk zijn geweest mijn excuses. Ik ga proberen het beter uit te leggen.
Ik heb twee sheets, sheet 1 heet A en sheet 2 heet B. In sheet C heb ik data dat moet worden geplakt in A of B, maakt niet uit waar maar niet in rij en kolom 1 en vooral niet in cel a1 omdat daar een naam staat: A of B. Doordat in cel a1 A of B staat heten de twee werksheets ook A en B.

Hoe de spreadsheet werkt: als ik in sheet A of B staat, is er ook een macro knop. Als je daar op drukt, wordt de data uit C gekopieerd en wordt het geplakt (maakt niet uit waar voor dit voorbeeld) in de sheet waar ik stond A of B. Dit zou ik graag willen oplossen met een macro en heb jullie hulp hierbij nodig.


Maar ik het het al opgelost door de code ActiveSheet.previous.Select te gebruiken om terug te keren naar de sheet waar ik stond, hoera!
Hoedanook zou ik toch willen weten of het zonder deze code (ActiveSheet.previous.Select) op te lossen is.


Met vriendelijke groet,
Team Roy







Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.169
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: excel vba
« Reactie #5 Gepost op: 16 juli 2019, 12:07:08 »
Hallo team roy,

Nu ga je een andere vraag stellen, waar je vorige vraag beantwoord is, maar waar je niet op reageert...?

Graag je reactie op mijn antwoord/oplossingske op je eerste vraag.

Voor je "nieuwe" vraag zie ik ook graag een voorbeeldbestandje  0:-)

Citaat
Ik heb twee sheets, sheet 1 heet A en sheet 2 heet B. In sheet C heb ik data

Dat zijn dus 3 sheets....  ::) A, B en C .....

:) SoftAid :)             

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline team roy

  • Lid
  • *
  • Berichten: 60
  • Geslacht: Man
  • Oplossing.be
Re: excel vba
« Reactie #6 Gepost op: 16 juli 2019, 12:36:24 »
Hi,

Ik had inderdaad niet gereageert op de oplossing van de vorige vraag excuses, helaas werkte die niet (in mijn macro). Maar de vorige vraag is nog niet opgelost. Gaat het jullie lukken om die vraag op te lossen?
Om het "probleem" te verduidelijken, het zou toch wel moeten lukken dat de code: sheets("........").select en dat tussen ("........") kan verwijzen naar cel a1 van elke werksheet want daar staat een naam dat tevens wordt vermeld bij de benaming van de werksheet?

Ik hoop dat ik duidelijk ben anders hoor ik het graag.

mvg,
Team Roy

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.169
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: excel vba
« Reactie #7 Gepost op: 16 juli 2019, 13:05:57 »
Ik had inderdaad niet gereageerd op de oplossing van de vorige vraag excuses, helaas werkte die niet (in mijn macro)
De macro:
Sub test()
Sheets("static data").Range("A17:I32").copy destination:=Range("A17")
End Sub
Werkt zeker wel. En was een correct antwoord op je allereerste vraag.
Hoe jij de code in jou bestaande macro invoegt, daar hebben wij, zonder voorbeeldbestand, het raden naar....
Maar de vorige vraag is nog niet opgelost. Gaat het jullie lukken om die vraag op te lossen?
Post een voorbeeld bestand van dat werkboek ( dus dat met de tabbladen "static data" en "test"...)
Om het "probleem" te verduidelijken, het zou toch wel moeten lukken dat de code: sheets("........").select en dat tussen ("........") kan verwijzen naar cel a1 van elke werksheet want daar staat een naam dat tevens wordt vermeld bij de benaming van de werksheet?
Niet van de hak op de tak springen. Dat maakt het enkel onduidelijk. Je vraagt nu veel meer dan in je eerste vraag, dus post een voorbeeldbestandje. We helpen je graag.

:) SoftAid :)             

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline team roy

  • Lid
  • *
  • Berichten: 60
  • Geslacht: Man
  • Oplossing.be
Re: excel vba
« Reactie #8 Gepost op: 16 juli 2019, 13:17:44 »
Hi, excuses dat ik zo rommelig ben. De sheet kan ik helaas niet sturen ivm bedrijfs-privacy. Ik ga een heel ander spreadsheet maken dat op hetzelfde neerkomt. Ik heb mijn "probleem" opgelost op een ander manier maar de vraag blijft bestaan. Geef me a.u.b. wat tijd dan mail ik het jullie. Vraagje vinden jullie het ook een interessant vraagstuk?

Offline team roy

  • Lid
  • *
  • Berichten: 60
  • Geslacht: Man
  • Oplossing.be
Re: excel vba
« Reactie #9 Gepost op: 16 juli 2019, 13:38:07 »
Hallo,

Hier is de spreadsheet dan. Enige toelichting.
Er zijn twee macro knoppen: (1) VOEG NIEUW VELD TOE ONDERAAN & (2) INSERT ..... WORDEN.

De eerste voegt data toe onderaan al de andere data.

De tweede voegt data toe tussen al de andere data. Om deze te gebruiken, zal je op X (in het rood en geel) eerst moeten staan en dan op de knop drukken.

Ik hoor heel graag of het ter verbetering is (vast wel hoor ik ben geen vba-genie).


mvg,
Team Roy


Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.169
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: excel vba
« Reactie #10 Gepost op: 16 juli 2019, 15:01:44 »
Hallo team roy,

Veel "spielerei", maar wat wil je bereiken?

Je code werkt, en kan verbeterd/vereenvoudigd worden, maar dan moeten we de spelregels kennen.

:) SoftAid :)             

PS:
ik zou Application.ScreenUpdating = True vóór de MsgBox MsgBox "nieuw veld is toegevoegd zetten....
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline team roy

  • Lid
  • *
  • Berichten: 60
  • Geslacht: Man
  • Oplossing.be
Re: excel vba
« Reactie #11 Gepost op: 16 juli 2019, 15:26:16 »
Hi Softaid,

Dank voor je feedback. Het is inderdaad veel spielerei maar langzamerhand leer ik en hopelijk wordt ik beter. Wat ik wil bereiken, is niet te zien in de bijlage die ik je stuurde. Het is veel "geweldiger".
Maar terugkomend op mijn 1e vraag: de code: sheets("......").select kan niet verwijzen naar wat in Cel a1 staat?

Ik hoor het graag van je.


mvg,
Team Roy



Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.169
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: excel vba
« Reactie #12 Gepost op: 16 juli 2019, 15:35:58 »
Hallo Roy,

Bedoel je zo iets?

a = Range("A1").Value     'a is een variabele die hier de waarde in cel A1 krijgt
sheets(a).select

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline team roy

  • Lid
  • *
  • Berichten: 60
  • Geslacht: Man
  • Oplossing.be
Re: excel vba
« Reactie #13 Gepost op: 16 juli 2019, 15:53:54 »
Hi,

Dat ziet er heel strak uit, ik ga het proberen.

Dank je wel.

mvg,
Team Roy

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: excel vba
« Reactie #14 Gepost op: 16 juli 2019, 16:56:20 »
Ik begrijp uw vraag niet.
Je hoeft toch niets te selecteren, De knoppen staan op ieder blad, dus de code wordt uitgevoerd op het actieve blad of met andere woorden het blad waar je de knop indrukt.
Voor zover ik je doelstelling begrijp (spielerei :blink:) zou volgende code moeten doen wat je vraagt.

Voor invoegen onderaan.
Sub Oplossing_Toevoegen()
Application.ScreenUpdating = False
Lr = Cells(Rows.Count, 1).End(xlUp).Row
Set Rng = Range("A" & Lr + 2)
    If IsEmpty(Range("a1")) = True Then
        Range("A1").Value = InputBox("voer een naam in voor cel A1", "Tabblad Naam Wijzigen", 1)
    ActiveSheet.Name = Range("a1").Value
    Else
        MsgBox "Active sheet: " & ActiveSheet.Name & " cell a1 is not empty"
    End If
    Sheets("static data").Range("A17:I32").Copy
    Rng.PasteSpecial (xlPasteAll)
Application.ScreenUpdating = True
End Sub
voor invoegen als je op een gele cell gaat staan.
Sub Oplossing_Invoegen()
Application.ScreenUpdating = False
Set Rng = Range("A1:I17")
    ActiveCell.Rng.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    MsgBox "nieuw veld is toegevoegd", vbInformation, "'t is in de sjakosj"
Application.ScreenUpdating = True
End Sub

 


www.combell.com