SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Bij macro's die een bepaalde, merkbare, tijd nodig hebben om hun werk te doen is het van belang de gebruiker een idee te geven van wat er gebeurt, zeker met macro-optimalisatie aan kan het lijken alsof Excel is vastgelopen. Je kan bijvoorbeeld de statusbar een waarde geven, met eventueel een percentage van de reeds uitgevoerde code.SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Verder
Alle vorige topics zijn hier terug te vinden.
Nieuw topic? Haal de OP uit de wiki
[ Bericht 28% gewijzigd door qu63 op 30-01-2012 15:01:43 ]It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
Oh, helemaal overheen gelezenquote:Op vrijdag 27 januari 2012 15:37 schreef qu63 het volgende:
[..]
Ik weet niet of dat ook werkt met je grafieklijn..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | Sub PosNegChart() Dim i As Integer Dim j As Integer Dim x As Range Dim y As Range Dim xnew() As Double Dim ynew() As Double 'User input x en y waarden Set x = Application.InputBox("Kies range X-as", "FOK! Excel Help", , , , , , 8) Set y = Application.InputBox("Kies range Y-as", "FOK! Excel Help", , , , , , 8) ReDim xnew(0) ReDim ynew(0) For i = 1 To x.Rows.Count 'Arrays uitbreiden ReDim Preserve xnew(UBound(xnew) + 1) ReDim Preserve ynew(UBound(ynew) + 1) 'x en y waarden aan nieuw array toevoegen xnew(UBound(xnew)) = x(i, 1) ynew(UBound(ynew)) = y(i, 1) 'Bekende (x1,y1) en (x2,y2) voor bepaling 'Richtingscoëfficient en B uit y = ax + b A1 = x(i, 1) B1 = y(i, 1) A2 = x(i + 1, 1) B2 = y(i + 1, 1) 'berekening y = 0 (snijdpunt x-as) SP = -1 * (B2 - (A2 * (B2 - B1) / (A2 - A1))) / (B2 - B1) / (A2 - A1) 'test of snijden x-as plaatsvindt in deze verzameling If SP > A1 And SP < A2 Then 'uitbreiden nieuwe arrays en toevoegen y=0 snijpunten x as ReDim Preserve xnew(UBound(xnew) + 1) ReDim Preserve ynew(UBound(ynew) + 1) ynew(UBound(ynew)) = 0 xnew(UBound(xnew)) = SP End If Next 'actieve sheetnaam onthouden Dim Naam As String Naam = ActiveSheet.Name 'Geheime sheet aanmaken (eerst verwijderen) On Error Resume Next Application.DisplayAlerts = False Sheets("FOK").Delete Application.DisplayAlerts = True On Error GoTo 0 ActiveWorkbook.Sheets.Add ActiveSheet.Name = ("FOK") Sheets("FOK").Visible = False 'Nieuwe serie x en y waarden plaatsen in geheime sheet For i = 1 To UBound(xnew) Sheets("FOK").Cells(i, 1) = xnew(i) Sheets("FOK").Cells(i, 2) = ynew(i) Next 'Grafiek toevoegen Charts.Add ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = Sheets("FOK").Range(Sheets("FOK").Cells(LBound(xnew) + 1, 1), Sheets("FOK").Cells(UBound(xnew), 1)) ActiveChart.SeriesCollection(1).Values = Sheets("FOK").Range(Sheets("FOK").Cells(LBound(xnew) + 1, 2), Sheets("FOK").Cells(UBound(xnew), 2)) ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart.Location Where:=xlLocationAsObject, Name:=Naam For i = 1 To UBound(xnew) On Error Resume Next If ynew(i) <= 0 And ynew(i + 1) <= 0 Then ActiveChart.SeriesCollection(1).Points(i + 1).Border.ColorIndex = 3 End If Next ActiveChart.Legend.Delete End Sub |
1 2 3 4 | Dim x As Variant x = Range("A1:B4") MsgBox x(2,2) 'geeft waarde cell B2 Range("A12:B15") = x |
ok, dank je, ik zal het meenemen, ik dacht dat ik range moest gebruiken ivm met de input van user, ik had in het begin steeds fouten in de de uitvoering van code en kon niet vinden waar het lag. Uiteindelijk lag het niet aan de ranges maar heel ergens anders...quote:Op zondag 29 januari 2012 18:05 schreef ralfie het volgende:
@KritischeMassa
[ code verwijderd ]
Ranges kun je makkelijk converteren naar Variants, en omgekeerd. Gebruik is weinig anders als cells(2 argumenten, rij en kolom), maar snelheid is honderden malen sneller.
http://www.mediafire.com/?8kbsfc8v0mjyiffquote:Op maandag 30 januari 2012 13:04 schreef Basp1 het volgende:
Kan de handige sheet met macros (tip 4) ergens anders geupload worden, de mediafire link werkt niet meer.
quote:Op maandag 30 januari 2012 11:07 schreef KritischeMassa het volgende:
Maak een cel waarin je zet =min(c:c)
vervolgens doe je voorwaardelijke opmaak vergelijken met die celwaarde
zie de link aan Basp, het menu zit hierin met verklaringenquote:Op maandag 30 januari 2012 12:55 schreef Deetch het volgende:
@Qu63, hoe maak je zo'n extra menu? en kun je die ook installeerbaar maken?
quote:
Oeps, dan heb ik niet de goeie gepakt.. Ga em ff updaten!quote:Op maandag 30 januari 2012 13:30 schreef KritischeMassa het volgende:
[..]
http://www.mediafire.com/?8kbsfc8v0mjyiff
Gek in de OP wiki had ik sowieso ook een ander link geplakt (ik had de OP geheel herschreven)
Geen idee, dat was een screenshot van KritischeMassaquote:Op maandag 30 januari 2012 12:55 schreef Deetch het volgende:
@Qu63, hoe maak je zo'n extra menu? en kun je die ook installeerbaar maken?
Zie OPquote:Op maandag 30 januari 2012 15:06 schreef Jesse_ het volgende:
Wat zitten er eigenlijk voor macro's in het macro bestand?
NOD32 gaat helemaal over zijn gerrit van deze linkquote:Op maandag 30 januari 2012 13:30 schreef KritischeMassa het volgende:
[..]
http://www.mediafire.com/?8kbsfc8v0mjyiff
Gek in de OP wiki had ik sowieso ook een ander link geplakt (ik had de OP geheel herschreven)
Dat is gek... er zit niets bijzonders in namelijkquote:Op maandag 30 januari 2012 15:14 schreef mirelia het volgende:
[..]
NOD32 gaat helemaal over zijn gerrit van deze link
Je kan vast wel een excel bestand koppelen aan een simpel batch filetje dat even een deltree doet oidquote:Op maandag 30 januari 2012 15:23 schreef KritischeMassa het volgende:
[..]
Dat is gek... er zit niets bijzonders in namelijk
Maar misschien worden VBA macro's per definitie als riskant beoordeeld?
Het is gewoon een zip file met hierin een sheet met macro's
Als je het niet vertrouwd kun je de sheet openen zonder macro's te activeren en de code bekijken
Ik kan leuk programmeren, maar een virus schrijven is een level of 100 te hoog gegrepen voor mij
Ja ok, maar dat batchfiletje moet ik er dan wel bij leverenquote:Op maandag 30 januari 2012 15:59 schreef Jesse_ het volgende:
[..]
Je kan vast wel een excel bestand koppelen aan een simpel batch filetje dat even een deltree doet oid
aha.. ok, dank jequote:Op maandag 30 januari 2012 18:42 schreef mirelia het volgende:
Ik kreeg de meldingen op de site, niet op het bestand zelf.
Daar is niets mee aan de hand, excuses voor de verwarring
=1,25/24quote:Op vrijdag 3 februari 2012 17:00 schreef Puckzzz het volgende:
Ik heb Excel 2010.
Taal geen idee.
Ik heb twee identieke tabbladen met als enig verschil dat ik in tabblad 2 zal werken. (maar de gegevens worden wel overgenomen in tab 1)
Daar komt in een kolom een tijdsnotatie te staan in decimalen. Dus voor 1 uur en een kwartier komt daar te staan 1.25. We ronden alles af naar kwartieren dus doen niet moeilijk met 5 minuutjes e.d.
Nu moet ik dus in diezelfde cel maar dan in tabblad1 dat decimale getal omzetten naar uren en minuten. daar moet dus komen te staan 1:15
Ik krijg het niet voor elkaar
quote:Op vrijdag 3 februari 2012 17:10 schreef DaFan het volgende:
Lol ok dat is best makkelijk.
Kritisch owned dit topic
1 2 3 4 5 6 7 8 9 | Function SubT(Bereik As Variant, Term As String, TermKol as integer, OptelKol as integer) For i = 1 To Bereik.Count If Term = Bereik(i, TermKol) Then SubT = SubT + Bereik(i, OptelKol) End If Next End Function |
Mijn tweede suggestie is beter en sneller (UDF is traag)quote:Op vrijdag 3 februari 2012 20:07 schreef Sjaakbakfiets het volgende:
Dank voor je uitgebreide reactie, ik ga er mee aan de slag!
Waarom niet helemaal dan?quote:Op vrijdag 3 februari 2012 20:38 schreef Sjaakbakfiets het volgende:
Mocht je een oplossing hebben voor mijn volgend probleem dan hoor ik het graag![]()
Ik heb 2 excelbestanden (respectievelijk 4000 en 8000 rijen), en in beide bestanden zit een kolom met codes. In totaal zijn ongeveer 3500 van deze codes hetzelfde. U raadt het al, deze 3500 codes (met bijbehorende informatie) moet ik filteren.
Weet jij/iemand hoe ik deze bestanden kan matchen?
Edit: grotendeels gelukt, dmv formule ALS(ISFOUT(VERT.ZOEKEN(A1;B:B;1;0));"";VERT.ZOEKEN(A1;B:B;1;0))
Macro/VBAquote:Op zondag 5 februari 2012 15:24 schreef elkravo het volgende:
Stel ik heb een vrij lange Excel lijst/tabel. Hierin staat een kolom met categoriën, bijvoorbeeld A, B, C.
Iedere rij/object heeft dus een categorie A B of C gekregen, hierin zit geen volgorde
Nu wil ik graag dat er ondere iedere rij van categorie B een extra lege regel wordt toegevoegd.
Beperking: ik kan/mag de lijst NIET sorteren omdat ik dan nooit meer terugsorteren kan naar de huidige volgorde.
Kan dit makkelijk, zonder dat ik handmatig rijen 1-voor-1 moet toevoegen?
Ik probeer zoveel mogelijk macro's VBA te vermijden omdat ik er geen verstand van heb. Liefst een simpel trucje. Het betreft een eenmalige verbouwing van een excel lijst waarbij ik onder bepaalde rijen van een categorie een extra regel moet toevoegen. En de lijst is 10.000 rijen...quote:Op zondag 5 februari 2012 15:27 schreef qu63 het volgende:
[..]
Macro/VBA
KritischeMassa zal zo wel langskomen om het uit te leggen
Of zoek uit hoe je t zelf kan doen, ik kan t namelijk ook (nog) niet goed (genoeg)
Ja ik zou wel VBA gebruikenquote:Op zondag 5 februari 2012 15:30 schreef elkravo het volgende:
[..]
Ik probeer zoveel mogelijk macro's VBA te vermijden omdat ik er geen verstand van heb. Liefst een simpel trucje. Het betreft een eenmalige verbouwing van een excel lijst waarbij ik onder bepaalde rijen van een categorie een extra regel moet toevoegen. En de lijst is 10.000 rijen...
1 2 3 4 5 6 7 8 9 10 11 12 | Sub InsertLines() Dim LastRow As Long With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row End With For i = LastRow To 1 Step -1 If ActiveSheet.Cells(i, 1) = "B" Then Rows(i + 1).Insert Shift:=xlDown End If Next End Sub |
Je kan altijd terug sorteren als je eerst een kolom maakt die gewoon telt van 1 tot eindequote:Op zondag 5 februari 2012 15:24 schreef elkravo het volgende:
Beperking: ik kan/mag de lijst NIET sorteren omdat ik dan nooit meer terugsorteren kan naar de huidige volgorde.
1 vraagje... in de code, waar staat de A voor in "LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ??quote:Op zondag 5 februari 2012 15:47 schreef KritischeMassa het volgende:
[..]
Ja ik zou wel VBA gebruiken
Maar ja
Het invoegen van regels is nu eenmaal niet mogelijk met een formule, of lastig.
Als je in VBA gaat klooien maak dan wel eerst een backup van de huidige situatie.
[ code verwijderd ]
Deze code in de betreffende sheet plakken (in het VBA scherm) en de macro draaien
Deze code gaat ervan uit dat de ABC in kolom A staat (activesheet.cells(i,1) = "B") de 1 in cells verwijzing slaat op kolom A dat kun je aanpassen
Hij kijkt in kolom A wat de laatste regel isquote:Op zondag 5 februari 2012 16:17 schreef elkravo het volgende:
[..]
1 vraagje... in de code, waar staat de A voor in "LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ??
1 2 3 4 5 6 7 | Sub InsertLines() For i = 32012 To 1 Step -1 If ActiveSheet.Cells(i, 1) = "B" Then Rows(i + 1).Insert Shift:=xlDown End If Next End Sub |
Ok... dan snap ik 'm... ben geen VBA held ;-)... normaal als ik een rij toevoeg, duurt dat 3 seconden ivm formuleberekeningen... de macro runt nu... zal wel even duren ;-)... laat m'n comp gewoonjakkeren... Hopelijk kom ik straks terug met goed het resultaat op m'n scherm.quote:Op zondag 5 februari 2012 16:20 schreef KritischeMassa het volgende:
[..]
Hij kijkt in kolom A wat de laatste regel is
Ik ben uitgegaan van kolom A
Je kan ook de lastrow opgeven als je die weet (bijvoorbeeld rij 32012)
Dan kan je volstaan met
[ code verwijderd ]
Ach had dat gezegdquote:Op zondag 5 februari 2012 16:26 schreef elkravo het volgende:
[..]
Ok... dan snap ik 'm... ben geen VBA held ;-)... normaal als ik een rij toevoeg, duurt dat 3 seconden ivm formuleberekeningen... de macro runt nu... zal wel even duren ;-)... laat m'n comp gewoonjakkeren... Hopelijk kom ik straks terug met goed het resultaat op m'n scherm.
Yep... dat doe ik sowieso... heb je die extra code... want heb het gevoel dat mijn comp het niet aankan... ;-)quote:Op zondag 5 februari 2012 16:28 schreef KritischeMassa het volgende:
[..]
Ach had dat gezegd
dan had ik wat regels code toegevoegd om de berekeningen uit te zetten...
Je hebt wel een back up gemaakt eerst?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | Sub InsertLines() MOA Dim LastRow As Long With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row End With For i = LastRow To 1 Step -1 If ActiveSheet.Cells(i, 1) = "B" Then Rows(i + 1).Insert Shift:=xlDown End If Next MOU End Sub Sub MOA() 'MacroOptimalisatieAan On Error Resume Next Application.Cursor = xlWait Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual Application.DisplayAlerts = False End Sub Sub MOU() 'MacroOptimalisatieUit On Error Resume Next Application.Cursor = xlDefault Application.ScreenUpdating = True Application.StatusBar = False Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic Application.DisplayAlerts = True End Sub |
Dat werkte een stuk sneller... koste 5 minuutjes nu ;-)quote:Op zondag 5 februari 2012 16:43 schreef KritischeMassa het volgende:
Nee hij begint onderaan
ok
[ code verwijderd ]
quote:Op zondag 5 februari 2012 17:03 schreef elkravo het volgende:
[..]
Dat werkte een stuk sneller... koste 5 minuutjes nu ;-)
VEEL DANK!![]()
Mijn oorspronkelijke vraag is wel volledig opgelost, maar het totale probleem nog niet helemaalquote:
Die opmerking sloeg op jouw edit, je gaf aan dat het was gelukt maar niet helemaal. Wat lukt er dan niet?quote:Op zondag 5 februari 2012 17:14 schreef Sjaakbakfiets het volgende:
[..]
Mijn oorspronkelijke vraag is wel volledig opgelost, maar het totale probleem nog niet helemaal
Is een Gantt-chart geen optie?quote:Op zondag 5 februari 2012 19:00 schreef Corporaal het volgende:
Hoi,
Ik ben bezig met een spreadsheet voor de status van verschillende projecten. Om het geheel overzichtelijk te houden heb ik aan de status van de diverse projecten kleuren gekoppeld. Nu wil ik graag een losse legenda.Eigenlijk een soort pop up.
Kan dit in Excel?
MOA en MOUA zijn handig! Thankks!quote:Op zondag 5 februari 2012 16:43 schreef KritischeMassa het volgende:
Nee hij begint onderaan
ok
[ code verwijderd ]
Jouw versie is net wat uitgebreider dan wat ik zelf al had, die stopte en startte alleen het herberekenen namelijk..quote:Op maandag 6 februari 2012 06:21 schreef KritischeMassa het volgende:
Zorg wel dat je altijd MOU draait dus ook na fout afhandeling in macro code
Anders doet je excel het niet meer(na herstart van excel wel trouwens hoor, maar omdat screenupdate uitstaat lijkt excel stuk)
In de application.statusbar kun je communiceren met de gebruiker, bijvoorbeeld percentage klaar weergeven, of gewoon de waarde van teller i bijvoorbeeld. Zo heeft de gebruiker ook het idee dat er wat gebeurt.
Edit:
Als jouw macro afhankelijk is van tussentijdse celuitkomsten moet je wel eerst de moa draaien en dan weer mou anders staat er niets in de cel want de berekeningen staan uit
quote:Op maandag 6 februari 2012 10:35 schreef Deetch het volgende:
mooi verhaal KM, deze ga ik veel gebruiken. Nog wel even puzzelen hoe die statusbar werkt.
1 2 3 4 5 6 7 8 9 10 11 | Sub StatBarDemo() 'Een simpel tellertje in de statusbar weergeven For i = 0 To 32000 Application.StatusBar = "Percentage uitgevoerd: " & CInt((i / 32000) * 100) & "%" Next 'statusbar weer resetten Application.StatusBar = False End Sub |
1 2 3 4 5 6 7 8 9 | Sub StatBarDemo() 'Een soort van progress bar in de statusbar weergeven For i = 0 To 32000 Application.StatusBar = (CInt((i / 32000) * 100)) & "% " & String(CInt((i / 32000) * 10), ChrW(9609)) Next 'statusbar weer resetten Application.StatusBar = False End Sub |
Dat zou je zelf kunnen uitvinden aan de hand van reeds gepostte code, maar ok, ik ben de kwaadste nietquote:Op maandag 6 februari 2012 19:28 schreef elkravo het volgende:
Hoi KM,
Dit moet een eitje zijn voor je:
In een lijst van 10.000 items (lengte beperking), staan in kolom B datums.
Willekeurig ontbreken op bepaalde regels/rijen datums (lege cel).
Er is nooit sprake van twee lege regels/rijen.
Is er een leuk VBAtje waarbij van cel B5 t/m B10.005 wordt doorlopen en indien lege cel, de datum(-waarde (paste value)) van de bovenstaande wordt gekopieerd en geplakt? Zou me handmatig een-voor-een copy-pasten schelen.
Bij voorbaat dank!
1 2 3 4 5 6 7 8 9 10 11 | Sub AddDate() MOA 'sub MOA is een paar posts terug te vinden For i = 5 To 10005 If ActiveSheet.Cells(i, 2) = "" Then ActiveSheet.Cells(i, 2) = ActiveSheet.Cells(i - 1, 2) End If Next MOU 'sub MOU is een paar posts terug te vinden End Sub |
Nee je bent de kwaadste niet...quote:Op maandag 6 februari 2012 19:41 schreef KritischeMassa het volgende:
[..]
Dat zou je zelf kunnen uitvinden aan de hand van reeds gepostte code, maar ok, ik ben de kwaadste niet
Deze code in het werkblad of een module plakken
[ code verwijderd ]
Zoeken jullie nog collega's?quote:Op maandag 6 februari 2012 17:17 schreef KritischeMassa het volgende:
Uit irritatie hierover ben ik ooit zelf begonnen met het maken van die dingen, zo erg dat ik mijn eigen werkzaamheden zowat had weggeprogrammeerd. Tegenwoordig mag ik een deel van mijn tijd besteden aan dit soort crea-bea gehobby
Inderdaad, als A1 blad 1 gelijk is aan A23 blad 2 dan moet ook B1 met B23 worden vergeleken en zo verder want er kan een "afwijking" in de volgende kolommen voorkomen.quote:Op dinsdag 7 februari 2012 08:38 schreef KritischeMassa het volgende:
Het antwoord van Wokkel in jouw eerste topic voldeed niet?
Stel dat A1 blad 1 gelijk is aan A23 blad 2 moet dan ook B1 met B23 worden vergeleken? en zo verder voor C t/m H of is een vergelijking van A met A voldoende?
Hmm, dan zit ik met mijn opleiding Small Business & Retail Management niet echt goed geloof ikquote:Op dinsdag 7 februari 2012 06:37 schreef KritischeMassa het volgende:
[..]
Goeie meettechnici zijn schaars, dus ja die zeker
Nee. Wen er maar aanquote:Op dinsdag 7 februari 2012 11:31 schreef Setting_Sun het volgende:
Excel 2010 de look van Excel 2007 geven, kan dat?
gewoon even eraan wennen.quote:Op dinsdag 7 februari 2012 11:31 schreef Setting_Sun het volgende:
Excel 2010 de look van Excel 2007 geven, kan dat?
Werkte de tip van Wokkel?quote:Op dinsdag 7 februari 2012 08:52 schreef Frixel het volgende:
[..]
Inderdaad, als A1 blad 1 gelijk is aan A23 blad 2 dan moet ook B1 met B23 worden vergeleken en zo verder want er kan een "afwijking" in de volgende kolommen voorkomen.
dat maakt het zo ingewikkeld vrees ik.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | Sub MergeFiles() If WB_1 = "" Then Exit Sub If WB_2 = "" Then Exit Sub MOA Workbooks.Open (WB_1) WB_1_Name = ActiveWorkbook.Name WB_1_LastCell = Workbooks(WB_1_Name).Sheets(1).Cells.SpecialCells(xlCellTypeLastCell).Row Workbooks.Open (WB_2) WB_2_Name = ActiveWorkbook.Name WB_2_LastCell = Workbooks(WB_2_Name).Sheets(1).Cells.SpecialCells(xlCellTypeLastCell).Row NewRow = WB_1_LastCell + 1 'regel i uit de slave file moet vergeleken worden met iedere regel j uit de masterfile 'als regel i voorkomt in de masterfile dan doet de routine niets 'als regel i niet voorkomt in de masterfile zet de routine regel i onder de masterfile For i = 1 To WB_2_LastCell Application.StatusBar = CInt(i / WB_2_LastCell * 100) & "% klaar" SlaveStr = "" MasterStr = "" UniqueRow = True For KolTel = 1 To 8 SlaveStr = SlaveStr & Workbooks(WB_2_Name).Sheets(1).Cells(i, KolTel) Next For j = 1 To WB_1_LastCell MasterStr = "" For KolTel = 1 To 8 MasterStr = MasterStr & Workbooks(WB_1_Name).Sheets(1).Cells(j, KolTel) Next If SlaveStr = MasterStr Then UniqueRow = False End If Next If UniqueRow = True Then For KolTel = 1 To 8 Workbooks(WB_1_Name).Sheets(1).Cells(NewRow, KolTel) = Workbooks(WB_2_Name).Sheets(1).Cells(i, KolTel) Next NewRow = NewRow + 1 End If Next Workbooks(WB_2_Name).Close False MOU End Sub |
Opgeslagen als .xlsm?quote:Op dinsdag 7 februari 2012 23:34 schreef elkravo het volgende:
Ik heb macro's verwijderd uit mijn spreadsheet.
Echter bij opstarten meld Excel "deze sheet bevat macro's"...
Wat ben ik vergeten?
Heb nog een oudere Excel 2003.... dus nog gewoon XLSquote:
Dan zou het opgeslagen kunnen zijn als .xlm, maar ik zie dat t al opgelost isquote:Op woensdag 8 februari 2012 18:28 schreef elkravo het volgende:
[..]
Heb nog een oudere Excel 2003.... dus nog gewoon XLS
Hoe kom ik van die macro melding af als ik geen macro in de sheet meen te hebben?
quote:Op donderdag 9 februari 2012 12:11 schreef actuarisje het volgende:
Hoihoi,
Ik heb een vraag over het kopieren van een tabblad. Ik heb een sheet met daarin een overzicht van een aantal medewerkers en een aantal 'template'-sheets voor elk functieprofiel. Ik wil nu met een druk op de knop voor alle medewerkers in de lijst een eigen tabblad aanmaken, gebaseerd op hun functieprofiel. Er wordt dus gekeken naar welk functieprofiel in de lijst staat en aan de hand daarvan wordt bepaald van welke 'template'-sheet er een kopie moet worden gemaakt.
Ik heb beovenstaande functionaliteit gebouwd mbv VBA en op zich gaat dat goed. Voor elke medewerker wordt een juist tabblad aangemaakt. Ik zi nu alleen dat het mis gaat bij het printen van deze tabbladen. Bij het kopieren van de template-sheet wordt wel netjes de info uit de sheet meegenomen (tekst, kolombreedtes, gekleurde cellen e.d), maar niet de pagina-instellingen (schaal, marges kop/voettekst e.d).
Mijn vraag is dus: Hoe kan ik mbv VBA een sheet zodanig kopieren dat ook de pagina-instellingen worden meegenomen?
Wat ik nu doe is eerste een nieuw, leeg tabblad aanmaken (Worksheets.Add) en dan de template daarheen copy-pasten. En daarbij gaat het blijkbaar mis, want de sheet krijgt dan de pagina-instellingen van een nieuwe, lege sheet en niet die van de kopieer-bron...
1 | sheet.Copy([before], [after]); |
Ken je de functie vert.zoeken()?quote:Op donderdag 9 februari 2012 17:08 schreef Barry87 het volgende:
Ik heb het volgende 'probleem':
In kolom C heb ik de namen van producten staan en in kolom H staat bij een gedeelte van deze producten de prijs. Bijvoorbeeld in cel C2 staat het product 'Measuring jug' in cel H2 staat de prijs van 4,60. Dit is prima.
Het probleem is echter dat in bijvoorbeeld C211 ook het product 'Measuring jug' staat maar de cel H211 is leeg.
Kan ik het niet zo instellen dat bij het invullen van 'Measuring jug' in cel C211 de prijs van 4,60 automatisch in cel H211 komt?
Hopelijk kan iemand mij helpen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Sub export() ' ' export Macro Range("A1:E50").Select Selection.Copy Workbooks.Add ActiveSheet.Paste ActiveWorkbook.SaveAs Filename:= _ "C:\Users\Elkravo\Desktop\File.csv" _ , FileFormat:=xlCSV, CreateBackup:=False Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True End Sub |
1 2 3 | fileSaveName = Application.GetSaveAsFilename( _ fileFilter:="csv Files (*.csv), *.csv") ActiveWorkbook.SaveAs (fileSaveName) |
Hoi KM, alvast bedankt, maar ik krijg het niet helemaal voor elkaar.quote:Op zaterdag 11 februari 2012 07:25 schreef KritischeMassa het volgende:
saveas = stringwaarde
Stringwaarde in simpel userform vragen
Je kan ook naar de directory browsen en de stringwaarde opbouwen als
stringwaarde = newdir & "Filename"
Of gewoon gebruiken wat er al is:
[ code verwijderd ]
Je kan eventueel ook gebruik maken van het pad ThisWorkbook.path & "\" & "NAAM"
Als je echter een Add-In gebruikt voor de code verwijst ThisWorkbook naar het pad van de Add-In en kun je beter ActiveWorkbook.path gebruiken
1 2 3 4 5 6 7 8 9 10 11 | Sub export() ' 'export Macro Range("A1:E50").Copy Workbooks.Add ActiveSheet.Paste fileSaveName = Application.GetSaveAsFilename(fileFilter:="csv Files (*.csv), *.csv") ActiveWorkbook.SaveAs (fileSaveName) Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 | Sub export() ' 'export Macro Range("A1:E50").Copy Workbooks.Add ActiveSheet.Paste fileSaveName = Application.GetSaveAsFilename(fileFilter:="csv Files (*.csv), *.csv") If fileSaveName = False Then Exit Sub ActiveWorkbook.SaveAs (fileSaveName) Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True End Sub |
Hoi KM,quote:Op zaterdag 11 februari 2012 13:57 schreef KritischeMassa het volgende:
[ code verwijderd ]
Als er geen bestandsnaam wordt gesuggereerd en je geeft niets op krijg je idd FALSE terug
dat kun je zo ondervangen:
[ code verwijderd ]
Wat gek, ik heb het getest in een willekruige sheet en daar werkte het gewoonquote:Op zaterdag 11 februari 2012 15:06 schreef elkravo het volgende:
[..]
Hoi KM,
Heb de tweede gedaan...
Hij vraagt om een naam, geeft CSV type aan. Echter, het resultaat is FALSE.xls ipv mijnnaam.csv
FALSE.xls is ook niet in csv format (te zien als ik deze open met kladblok).
1 2 3 | If fileSaveName = False Then Exit Sub msgbox filesavename ActiveWorkbook.SaveAs (fileSaveName) |
Hoi, ik zie geen verschil::quote:Op zaterdag 11 februari 2012 17:04 schreef KritischeMassa het volgende:
[..]
Wat gek, ik heb het getest in een willekruige sheet en daar werkte het gewoon
wat geeft een msgbox met de string erin?
dus zo:
[ code verwijderd ]
1 | , FileFormat:=xlCSV, |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |