Help!

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

Hulp bij posten

Recente topics

Auteur Topic: Werkblad kopiŽren  (gelezen 463 keer)

0 leden en 1 gast bekijken dit topic.

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.285
  • I've Upped my standards,now,up yours!
Werkblad kopiŽren
« Gepost op: 24 oktober 2020, 11:56:47 »
Beste oplossers,

Ik heb heb een een Werkboek met ťťn Sheet dat W22 heet. Daar staat een formule op in C5 = C3*C4
Als ik een getal in B1 intik bv 23 wil ik dat er een nieuw tabblad word aangemaakt dat W23 heet. (bij voorkeur na W22)
Als ik een getal in B1 intik bv 21 wil ik dat er een nieuw tabblad word aangemaakt dat W21 heet. (bij voorkeur voor W22)

Alles wat op W22 staat moet naar het andere werkblad gekopieerd worden.

Dit is het beste dat ik tot nu toe kon verzinnen maar dat werkt niet.
Iemand een beter idee?
alvast bedankt,
dizzl

Private Sub Worksheet_Change(ByVal Target As Range)

    MsgBox "ok"
     ' We kijken of dit tabblad nog niet bestaat
     Dim exists As Boolean
     exists = False
     For Each werkblad In Sheets
        If werkblad.Name = "w" & Target.Value Then exists = True
     Next
     
     'Als het werkblad niet bestaat maken we het aan
     If Not exists Then
        Sheets.Add.Name = "w" & Target.Value
     
        'We kopieren actief blad
        ActiveSheet.Copy
     
        'stellen het nieuwe sheet in als actieve sheet
        Worksheets("w" & Target.Value).Activate
        'ActiveSheet.Paste
    End If

End Sub

Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline pitufo

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 1.195
  • Geslacht: Man
Re: Werkblad kopiŽren
« Reactie #1 Gepost op: 24 oktober 2020, 13:26:08 »
Hallo dizzl,

Bekijk het eens met deze:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False
For i = 1 To Sheets.Count
    If Sheets(i).Name = "W" & Target.Value Then
        MsgBox ("Werkblad bestaat al.")
        Exit Sub
    End If
Next i
ActiveSheet.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "W" & Target.Value
For i = 1 To Sheets.Count - 1
    For j = i + 1 To Sheets.Count
        If Sheets(i).Name > Sheets(j).Name Then
            Sheets(j).Move before:=Sheets(i)
        End If
    Next j
Next i

End Sub

Succes!
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline cow18

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 264
  • Geslacht: Man
  • Oplossing.be
Re: Werkblad kopiŽren
« Reactie #2 Gepost op: 24 oktober 2020, 16:13:18 »
ik zou toch bovenin de module "Option Compare Text" toepassen ofwel voor het vergelijken van de strings "StrComp(Sheets(i).Name, Sheets(j).Name, vbTextCompare)" gebruiken om niet hoofdlettergevoelig te zijn.
Anders riskeer je een sortering als "W8","W9","w1".
Misschien ook een format toevoegen om er een "W##" van te maken ???

Offline pitufo

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 1.195
  • Geslacht: Man
Re: Werkblad kopiŽren
« Reactie #3 Gepost op: 24 oktober 2020, 16:51:59 »
In andere situaties zou ik meteen "inderdaad" zeggen maar vermits hier de werkbladen hun naam krijgen uit de code zal een kleine letter "w" vermoedelijk zelden  :D voorkomen.
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline cow18

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 264
  • Geslacht: Man
  • Oplossing.be
Re: Werkblad kopiŽren
« Reactie #4 Gepost op: 24 oktober 2020, 17:15:37 »
in de uitleg van #1 zie ik meer hoofdletters W staan dan kleine w's. In de code dan niet.
Maar, bon, wie ben ik  ?  :-[

Offline pitufo

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 1.195
  • Geslacht: Man
Re: Werkblad kopiŽren
« Reactie #5 Gepost op: 24 oktober 2020, 17:32:40 »
Citaat
Maar, bon, wie ben ik  ?
Zonder meer een supercrack in Excel en vba  8) , wie daar aan twijfelt is ziende blind!

Los daarvan: TS stelt zelf in #1 dat zijn code niet werkt, daarom waarschijnlijk zijn vraag om hulp  :)
In de alternatieve code die ik hem in #2 heb voorgesteld worden hoofdletters W gebruikt voor de nieuwe werkbladnamen.
Als bij aanvang het enige bestaande werkblad effectief W22 heet zie ik het goed komen  ;)

Tegelijk: ik ben uiteraard akkoord om je suggestie toe te voegen, kwestie van dan geen 100 maar 200% (zei de pseudo wiskundige  :D ) zeker te zijn.
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.285
  • I've Upped my standards,now,up yours!
Re: Werkblad kopiŽren
« Reactie #6 Gepost op: 24 oktober 2020, 18:30:58 »
Perfect wat ik zocht pitufo.
Bedankt
Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

 


www.combell.com