Hallo, ik heb een nogal rot probleem, als ik een nieuwe sheet toevoeg wil ik eerst kijken of er al een sheet is met ongeveer dezelfde naam, dwz, alleen de datum verschilt. Dit wil ik doen om in de nieuwe sheet de informatie van de oude sheet (in het geval van hetzelfde natuurlijk) over te nemen, zodat ik een lange chart kan maken. Dit laatste is me al wel gelukt, maar zonder de boven beschreven check, het werkt alleen wanneer de laatst toegevoegde sheet hetzelfde is als de nieuwe:
Mijn sheetnames zijn als volgt opgebouwd: informatie dag maand. Het informatie gedeelte moet dus overeenkomen.
Nu dacht ik dat het ongeveer zo wel zou kunnen:
Het probleem is dat dit alleen niet werkt, aangezien de datum van de sheet erachter ook veranderd in lengte, en de lengte van de informatie in de sheetnaam is ook niet altijd hetzelfde. Zijn er nog andere manieren, of zit ik zo wel op de goede weg.
Iedere suggestie is welkom
, alvast bedankt.
Visual Basic:
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
| If Len(Dir(naarbestandnaam)) > 0 Then Dim dubbelcheck As String 'hiermee kijk ik nu of de sheets bij elkaar horen, door gewoon naar een cel in de nieuwe sheet te kijken en deze te vergelijken met een warde in de oude sheet. Dim nrofoldshots As Integer 'lengte van de range in de oude sheet nrofoldshots = naarbestand.Worksheets(2).Cells(4, 2) dubbelcheck = naarbestand.Worksheets(1).Cells(6, 2) For Each BestaandeSheet In naarbestand.Worksheets If naarbestand.Worksheets(2).Cells(6, 2) = dubbelcheck Then For i = 1 To nrofoldshots naarbestand.Worksheets(NieuweNaam).Cells((i + 9), 1).Value = naarbestand.Worksheets(2).Cells((i + 9), 1).Value Next i For i = 1 To nrofshots 'aantal kolommen naarbestand.Worksheets(NieuweNaam).Cells((i + 9 + nrofoldshots), 1).Value = Application.WorksheetFunction.Max(uitbestand.Worksheets(1).Range(uitbestand.Worksheets(1).Cells(26, i), uitbestand.Worksheets(1).Cells(nrofpoints, i))) Next i naarbestand.Worksheets(NieuweNaam).Cells(4, 2).Value = (naarbestand.Worksheets(2).Cells(4, 2).Value + uitbestand.Worksheets(1).Cells(10, 2)) End If Next Application.DisplayAlerts = False naarbestand.Worksheets(2).Delete naarbestand.Charts(1).Delete 'testen voor bestanden met meer dan 2 worksheets Application.DisplayAlerts = True Else For i = 1 To nrofshots 'aantal kolommen naarbestand.Worksheets(1).Cells((i + 9), 1).Value = Application.WorksheetFunction.Max(uitbestand.Worksheets(1).Range(uitbestand.Worksheets(1).Cells(26, i), uitbestand.Worksheets(1).Cells(nrofpoints, i))) Next i End If |
Mijn sheetnames zijn als volgt opgebouwd: informatie dag maand. Het informatie gedeelte moet dus overeenkomen.
Nu dacht ik dat het ongeveer zo wel zou kunnen:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| dim vergelijkstring as string dim dubbelcheck as string dim bestaandesheet as worksheet dubbelcheck = waarde in nieuwe sheet.cell(ergens) If Len(Dir(naarbestandnaam)) > 0 Then 'check of er uberhaupt geen nieuw bestand is aangemaakt For Each BestaandeSheet In naarbestand.Worksheets bestaandesheet.name = vergelijkstring if len(eerstegedeeltenaam van vergelijkstring) = dubbelcheck then kopieer meuk uit oude naar nieuwe sheet kopieer meuk uit geopende bestand x aantal celletjes naar beneden end if next delete oude meuk else doe normaal en kopieer meuk alleen uit geopende bestand end if |
Het probleem is dat dit alleen niet werkt, aangezien de datum van de sheet erachter ook veranderd in lengte, en de lengte van de informatie in de sheetnaam is ook niet altijd hetzelfde. Zijn er nog andere manieren, of zit ik zo wel op de goede weg.
Iedere suggestie is welkom
[ Voor 6% gewijzigd door DarkShadow op 23-09-2005 11:40 ]