Jij bent misschien belangrijk, maar ik ben aardig ;)
Verwijderd
Bepaal het bereik, laat vba door dat bereik heen gaan, vergelijk waarde van actieve cel met waarde uit cel 2e blad en geef ander kleurtje als het verschillend is.
Edit: Zie hieronder, is natuurlijk nog simpeler.
[ Voor 11% gewijzigd door Verwijderd op 25-09-2003 11:30 ]
Als het ook om tekst gaat kun je het ook met een derde sheet kunnen oplossen; je moet dan vergelijken d.m.v. =ALS(Blad1!A2=Blad2!A2;;Blad2!A2)
a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]
FizGiz: Zou jij nog iets meer info hierover kunnen geven ik wil dat in het 2e stadium ook wel gaan proberen denk ik
Beide alvast bedankt !
Owja, het gaat om text en getallen, nu zal het vaker zijn dat er getallen zullen wijzigen dan text. Maar wordt er ook gecontroleerd of er items in het ene sheet staan en in de andere nog niet ??
[ Voor 33% gewijzigd door BacardiBreezer op 25-09-2003 11:33 ]
Jij bent misschien belangrijk, maar ik ben aardig ;)
=ALS(Blad1!A2=Blad2!A2;;Blad2!A2)BacardiBreezer schreef op 25 September 2003 @ 11:32:
Maar wordt er ook gecontroleerd of er items in het ene sheet staan en in de andere nog niet ??
Je snapt toch wel wat daar staat? Zo niet, dan moet je in Excel help ALS maar eens opzoeken.
a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]
Verwijderd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| Public Sub SheetDiff(inSheet1 As Worksheet, inSheet2 As Worksheet, outSheet As Worksheet) Dim i As Integer Dim j As Long For i = 1 To 10 'Each column Max=256 For j = 1 To 10 'Each row Max=65536 If inSheet1.Cells(j, i).Value <> inSheet2.Cells(j, i).Value Then outSheet.Cells(j, i).AddComment outSheet.Cells(j, i).Comment.Visible = False outSheet.Cells(j, i).Comment.Text Text:="Sh1=" & inSheet1.Cells(j, i).Value & " || Sh2=" & inSheet2.Cells(j, i).Value outSheet.Cells(j, i).Interior.ColorIndex = 10 Else outSheet.Cells(j, i).Value = inSheet1.Cells(j, i).Value End If Next j Next i End Sub Public Sub Main() SheetDiff ActiveWorkbook.Sheets(1), ActiveWorkbook.Sheets(2), ActiveWorkbook.Sheets(3) End Sub |
Jawel, ik bedoelde het op een andere manier dan jij begrijpt denk ik, is al opgelost.KingRichard schreef op 25 september 2003 @ 11:48:
![]()
[...]
=ALS(Blad1!A2=Blad2!A2;;Blad2!A2)
Je snapt toch wel wat daar staat? Zo niet, dan moet je in Excel help ALS maar eens opzoeken.
Thnx voor de CODE
Jij bent misschien belangrijk, maar ik ben aardig ;)
Jij bent misschien belangrijk, maar ik ben aardig ;)
a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]
Jouw oplossing geeft foutenKingRichard schreef op 25 September 2003 @ 15:44:
Bovenstaande VBA-code doet bijna hetzelfde als mijn oplossing. Alleen is mijn oplossing real-time (en makkelijker).
Jij bent misschien belangrijk, maar ik ben aardig ;)
Verwijderd
Start XL -> ALT-F11 (je komt in VBA)BacardiBreezer schreef op 25 september 2003 @ 14:24:
Ik begrijp het deels (ben geen VB man) mar hoe doe ik dat in main ongeveer ??
Ga in de project explorer op het project staan waarin je sheets zitten
Klik rechts -> Insert -> Module
Paste eerder geposte code in deze module, wil je de sheets bij naam kunnen aanroepen wijzig bovenstaande main dan in onderstaande en voeg ook onderstaande functie toe. Verander de namen in de benodigde sheetnamen en blijf in Main staan druk nu op de RUN Macro button (of druk F5)
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
| Public Sub Main() Dim Name1 As String Dim Name2 As String Dim Name3 As String Name1 = "Naam van sheet1" Name2 = "Naam van sheet2" Name3 = "Naam van sheet3" SheetDiff Name2Sheet(Name1), Name2Sheet(Name2), Name2Sheet(Name3) End Sub Private Function Name2Sheet(inName As String) As Worksheet Dim i As Integer Dim sheetorchart As Variant 'Workbook returns Sheet or Chart on Sheets (don't ask...) Set Name2Sheet = Nothing For i = 1 To ActiveWorkbook.Sheets.Count Set sheetorchart = ActiveWorkbook.Sheets.Item(i) If sheetorchart.Name = inName Then Set Name2Sheet = sheetorchart Exit For End If Next i End Function |
Dat realtime ben ik wel met je eensKingRichard schreef op 25 September 2003 @ 15:44:
Bovenstaande VBA-code doet bijna hetzelfde als mijn oplossing. Alleen is mijn oplossing real-time (en makkelijker).
Mijn oplossing is niet kant en klaar!Verwijderd schreef op 26 September 2003 @ 10:07:
[...]
Alleen geeft jouw code enkel de cell van het 2e blad terug als er een verschil is in cel tussen blad1 en blad2Verder weet ik eigenlijk niet of die code van jou ook werkt bij cellen van het type string, mogelijk werkt het alleen met numbers, maar dat weet ik niet zeker (ff proberen zou ik zeggen)...
TS mag zelf ook wat doen! Met ALS kun je de cellen met elkaar vergelijken, wat er vervolgens gebeurt moet 'ie zelf invullen. Als 'ie de verschillen tussen twee waardes wil hebben kan dat ook, bijvoorbeeld. En aangezien TS geen VBA-nerd is (zoals wij
Formule uitbreiden en op het hele sheet plakken dus, zou ik zeggen. En als er iets fout gaat, ben ik erg benieuwd wat dat dan is.
a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]
Onderstaande signature is al >20jr oud ***hoe dan***
---
Het internet is een veelbelovend medium
....dat maar heel weinig van zijn beloftes nakomt.
Wat weg is... raak je nooit meer kwijt :P
Verwijderd schreef op 29 september 2003 @ 11:20:
Maar dat is wel heel wat anders dan vergelijken.
BacardiBreezer schreef op 25 september 2003 @ 10:45:
[..] 2 excelsheets als het ware over elkaar heen leggen en kijken wat er gewijzigd is.
antwoord is dus ja volgens mij kun je gewoon de standaard functie van excel gebruiken ja...Ik vraag me af of Excel het zelf kan (ik dacht namelijk van niet) en of er anders programmatuur voor is ?
Onderstaande signature is al >20jr oud ***hoe dan***
---
Het internet is een veelbelovend medium
....dat maar heel weinig van zijn beloftes nakomt.
Wat weg is... raak je nooit meer kwijt :P
Ik zie dat het wel werken gaat maar in mijn 3e sheet krijg ik groene blokjes te zien en zodra ik daar op ga staan die ik het comment, dus het werkt al enigzins
Nu loopt het script alleen vast op deze regel:
outSheet.Cells(j, i).AddComment
De errorcode die ik krijg is 1004......
Hoe kan ik dit oplossen ?
Jij bent misschien belangrijk, maar ik ben aardig ;)
Waarom zou het script zoals je in de post hierboven ziet staan niet helemaal kunnen werken ?
Jij bent misschien belangrijk, maar ik ben aardig ;)
- Als je de hele draad opnieuw gelezen hebt, zul je gemerkt hebben dat ik mij in september nogal ergerde aan een aantal reacties. Als ik je probeer te helpen en ik heb een vraag, dan krijg daar graag antwoord op.
- Ik blijf bij mijn mening dat de VBA-oplossing een minder goede keuze is dan een eenvoudige formulebenadering, omdat je weinig ervaring met VBA hebt én omdat het sowieso niet de beste oplossing is. VBA dien je te gebruiken if all else fails.
- Error 1004: application-defined or object-defined error is een te vage foutmelding om zonder meer informatie een oorzaak voor te benoemen. Dus:
[ Voor 2% gewijzigd door KingRichard op 03-01-2004 03:11 . Reden: typefoutjes... ]
a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]
Dan wil ik jou eens vragen waarom jij zo snel aangebrand bent. Tis een forum zeg......KingRichard schreef op 03 januari 2004 @ 03:07:Welke code heb je gebruikt (er staan twee voorbeelden hierboven) en bij welke regel gaat het mis?
- Als je de hele draad opnieuw gelezen hebt, zul je gemerkt hebben dat ik mij in september nogal ergerde aan een aantal reacties. Als ik je probeer te helpen en ik heb een vraag, dan krijg daar graag antwoord op.
- Ik blijf bij mijn mening dat de VBA-oplossing een minder goede keuze is dan een eenvoudige formulebenadering, omdat je weinig ervaring met VBA hebt én omdat het sowieso niet de beste oplossing is. VBA dien je te gebruiken if all else fails.
- Error 1004: application-defined or object-defined error is een te vage foutmelding om zonder meer informatie een oorzaak voor te benoemen. Dus:
Jij bent misschien belangrijk, maar ik ben aardig ;)
Ten eerste: iets minder reageren richting de mensen die je al een hele tijd proberen te helpen mag ook welBacardiBreezer schreef op 03 januari 2004 @ 03:22:
Dan wil ik jou eens vragen waarom jij zo snel aangebrand bent. Tis een forum zeg......
Ten tweede: geef anders ook even antwoord op z'n vraag voor meer info, zie zijn punt 1
(Ten derde: nog de beste wensen
Daarnaast wordt in September al een heel ged werkende (bijna-af) oplossing gegeven: KingRichard in "Excel sheets vergelijken"
Eventueel nog een conditional formatting eroverheen, copy, ctrl-a, paste en klaar
Maar als je toch VBA wilt gebruiken (ik deel eigenlijk de mening van KingRichard: je wilt dit voor je eigen bestwil niet zomaar met VBA doen als je er geen ervaring mee hebt, blind copypasten werkt niet zoals je al merkt. Maar natuurlijk kan je best de afgelopen maanden de help en diverse tutorials hebben doorgespit
Anyhow, geen idee welke versie van XL jij gebruikt maar hier werkt het perfect. Kijk even in je online help of die AddComment functie wel wordt ondersteund (zonder parameters).
[ Voor 9% gewijzigd door F_J_K op 03-01-2004 10:39 . Reden: toch maar een puntje drie, anders lijk ik aangebrand 8)7 ]
'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)