[VB.NET] Bepalen hoevaak een waarde voorkomt in Excel-sheet

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • AzzKickah
  • Registratie: Juni 2001
  • Laatst online: 21-09 18:10

AzzKickah

06-CENSORED

Topicstarter
Ik ben sinds een aantal weken bezig met VB.NET en ik heb 2 goed werkende programmaatjes ontwikkeld voor op het werk die sommige handelingen wat minder tijdrovend maken. Dit liep allemaal gesmeerd, ik had het spul vrij snel onder de knie.
Beide programmaatjes werken met Excel-sheets om data in en uit te lezen, etc. Werkt perfect.

Alleen nu ben ik met een 3e programmaatje bezig en hier loop ik op 1 ding muurvast. Tot vervelens toe. Ik heb echt het complete internet afgestruind naar een eventuele oplossing (incl. verschillende fora) maar het lijkt wel of nog nooit iemand dit heeft willen doen in z'n prog...

Maar ik ben ervan overtuigd dat de oplossing 'simpel' is en vrij dicht ligt bij wat ik al heb. Ik kom er zelf alleen echt niet uit.

HET PROBLEEM:
Hoe bepaal ik vanuit mijn prog hoevaak een bepaalde waarde voorkomt in een Excel-sheet?
(De waarde hoeft niet volledig hetzelfde te zijn. Als de te zoeken waarde bijv. de datum 4/6/2009 is dan is een cel met daarin 4/6/2009 11:34 PM ook een match!)

Wat ik heb is:
Afbeeldingslocatie: http://www.tboekholt.com/images/vb.net/probleem_klein.jpg

En daarbij nog verschillende uitvoeringen geprobeerd, met bijvoorbeeld .Columns ipv .Range en nog wel 20 andere opzetjes. Met Do-Loop of met For-Next. Alles met -1 als resultaat of een foutmelding :?

Ik denk dat het plaatje in combinatie met de vraag genoeg is voor de min of meer gevorderde programmeur.
Elke tip of mogelijke oplossing wordt erg gewaardeerd!
(ben nu al ruim 48 uur bezig met dit stomme probleem :( )

[ Voor 0% gewijzigd door AzzKickah op 07-04-2009 20:54 . Reden: opmaak ]


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Wat is de onderliggende exception?

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 10:47

TeeDee

CQB 241

Heb hier even geen zaken om te testen, maar volgens mij verwacht de .FindNext ook een range.

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • D-Three
  • Registratie: Oktober 2001
  • Laatst online: 20-09 13:51
Misschien ben je hier iets mee?
http://office.microsoft.com/en-us/excel/HP011277791033.aspx

[ Voor 6% gewijzigd door D-Three op 07-04-2009 21:16 ]


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

TeeDee schreef op dinsdag 07 april 2009 @ 21:02:
Heb hier even geen zaken om te testen, maar volgens mij verwacht de .FindNext ook een range.
http://msdn.microsoft.com...excel.range.findnext.aspx
Note that After must be a single cell in the range.
Ik denk dat TS toch even zijn innerException moet posten.

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • AzzKickah
  • Registratie: Juni 2001
  • Laatst online: 21-09 18:10

AzzKickah

06-CENSORED

Topicstarter
Hmm die links kom ik niet echt verder mee. Die eerste had ik zelf ook al een keer gevonden maar dat gaat m niet doen.

Ik heb de Find en FindNext methodes op zichzelf wel werkend gehad maar ik krijg het puur niet voor elkaar om het in een werkende loop te krijgen waarmee ik dus kan bepalen hoe vaak die waarde voorkomt, en dat weer te geven in het form.

Hier de InnerException (die Nothing is wat ik wel grappig vond ;) ben benieuwd of je/jullie er wat mee kan/kunnen):

Afbeeldingslocatie: http://www.tboekholt.com/Images/VB.NET/InnerExecption_klein.jpg

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Kan je je project ergens online posten zodat we eens kunnen kijken.

Excel interop is a bitch.

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • AzzKickah
  • Registratie: Juni 2001
  • Laatst online: 21-09 18:10

AzzKickah

06-CENSORED

Topicstarter
Jazeker kan ik dat.

Hier: klik

Als je 'm runt, moet je ff de XLS-file loaden die in de debug-map staat, dan ff de datum van de rechter-datetimepicker veranderen, dan wordt de knop gedisabled. De radiobuttons doen nog niks.

Super dat je dit wil doen! :D haha! Thanx alvast! _/-\o_

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

AzzKickah schreef op dinsdag 07 april 2009 @ 23:06:
Jazeker kan ik dat.

Hier: klik

Als je 'm runt, moet je ff de XLS-file loaden die in de debug-map staat, dan ff de datum van de rechter-datetimepicker veranderen, dan wordt de knop gedisabled. De radiobuttons doen nog niks.

Super dat je dit wil doen! :D haha! Thanx alvast! _/-\o_
Ik zit nu op m'n werk. Ik zal als ik thuis ben rap even VB.NET installeren, en dan heb je morgen je oplossing

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 10:47

TeeDee

CQB 241

[quote]Snake schreef op dinsdag 07 april 2009 @ 21:54:
[...]
http://msdn.microsoft.com...excel.range.findnext.aspx
[quote]
Daar kan ik nog steeds niet uithalen waarom er geen range opgegeven dient te worden.
AzzKickah schreef op dinsdag 07 april 2009 @ 22:46:
Ik heb de Find en FindNext methodes op zichzelf wel werkend gehad maar ik krijg het puur niet voor elkaar om het in een werkende loop te krijgen waarmee ik dus kan bepalen hoe vaak die waarde voorkomt, en dat weer te geven in het form.
Als je dat nu vermeldt had ;)

offtopic:
O, en je host is down.
.
edit:
Maar goed, het ziet er naar uit dat Snake het e.e.a. voor je gaat voorkauwen.

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21-09 21:47

Creepy

Tactical Espionage Splatterer

Daar lijkt het wel op ja..... daarnaast helpen die screenshots ook niet echt. Kan je niet je relevante code hier posten en aangeven wat je nu gedaan hebt en wat daar niet mee lukte e.d. Ondanks je uitleg doe je niet meer dan een error posten en vragen om hulp en dat is nu net niet de bedoeling hier. Het is een forum hier en geen helpdesk ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • AzzKickah
  • Registratie: Juni 2001
  • Laatst online: 21-09 18:10

AzzKickah

06-CENSORED

Topicstarter
TeeDee schreef op dinsdag 07 april 2009 @ 23:56:
[quote]Snake schreef op dinsdag 07 april 2009 @ 21:54:
[...]
http://msdn.microsoft.com...excel.range.findnext.aspx
[quote]
Daar kan ik nog steeds niet uithalen waarom er geen range opgegeven dient te worden.
[...]

Als je dat nu vermeldt had ;)

offtopic:
O, en je host is down.
.
edit:
Maar goed, het ziet er naar uit dat Snake het e.e.a. voor je gaat voorkauwen.
Haha volgens mij had ik het 'kernprobleem' redelijk duidelijk gemaakt in de startpost :)

ff gecheckt, je hebt geprobeerd mijn host te bereiken _precies_ in de 3 (!) minuten dat ik m'n server heb gereboot :+

Acties:
  • 0 Henk 'm!

  • AzzKickah
  • Registratie: Juni 2001
  • Laatst online: 21-09 18:10

AzzKickah

06-CENSORED

Topicstarter
Creepy schreef op woensdag 08 april 2009 @ 08:45:
Daar lijkt het wel op ja..... daarnaast helpen die screenshots ook niet echt. Kan je niet je relevante code hier posten en aangeven wat je nu gedaan hebt en wat daar niet mee lukte e.d. Ondanks je uitleg doe je niet meer dan een error posten en vragen om hulp en dat is nu net niet de bedoeling hier. Het is een forum hier en geen helpdesk ;)
Welke code is verder nog relevant dan?
Het is 1 klein kaa uu tee probleempje, als ik daar een oplossing voor heb fix ik de rest van het hele progje zelf, 'peanuts' :+

Ik heb ook al echt tot vervelens toe van alles geprobeerd hiermee en ik krijg het niet voor elkaar. En het is mede zo onuitstaanbaar omdat ik tot dit probleem toe, alle voorgaande probleempjes die ik had met programmeren zelf uit heb kunnen vogelen! Alleen deze niet :(

Acties:
  • 0 Henk 'm!

  • CodeIT
  • Registratie: Juni 2002
  • Laatst online: 22-09 22:18

CodeIT

Code IT

Ik heb je FindDatum even bekeken en herschreven aan de hand van http://msdn.microsoft.com/en-us/library/e4x1k99a.aspx.
Anyway. Hier de code:

Visual Basic .NET:
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
    Private Sub FindDatum(ByVal TeZoekenDatum As String)
        Dim ExcelProg As Object = CreateObject("Excel.Application")
        Dim TicketFile As Object = ExcelProg.Workbooks.Open(OpenFileDialog1.FileName)
        Dim TicketList As Object = TicketFile.Worksheets(1)

        Dim GevondenAantal As Integer
        Dim misValue As Object = System.Reflection.Missing.Value
        Dim ZoekCels As Object
        Dim matchCel As Object
        Dim firstFoundAddress As String = Nothing
        ZoekCels = TicketList.Range("E:E")
        matchCel = ZoekCels.Find(TeZoekenDatum, misValue, misValue, misValue, misValue, misValue, misValue, misValue)

        Do Until matchCel Is Nothing
            With ZoekCels
                If String.IsNullOrEmpty(firstFoundAddress) Then
                    firstFoundAddress = matchCel.Address
                End If
                matchCel = .FindNext(matchCel)
                'matchCel = TicketList.Range.ActiveSheet.FindNext(TeZoekenDatum)
                GevondenAantal = GevondenAantal + 1
                If firstFoundAddress = matchCel.Address Then
                    Exit Do
                End If
            End With
        Loop


        GevondenAantal = GevondenAantal - 1
        Label5.Text = GevondenAantal
        ExcelProg.Quit()
    End Sub

Acties:
  • 0 Henk 'm!

  • AzzKickah
  • Registratie: Juni 2001
  • Laatst online: 21-09 18:10

AzzKickah

06-CENSORED

Topicstarter
CodeIT, je oplossing werkt inderdaad perfect :D
Ik zie nu ook waar ik 'de mist in ging' danwel waarom ik er niet uit kwam. d:)b

Super bedankt! En Snake ook uiteraard alsnog bedankt :)

Om nog heel even terug te komen op wat Creepy zei, ik snap wel dat het hier geen helpdesk is :)
Met deze oplossing is mijn prog ook nog lang niet klaar.
Maar nu ik dit werkend heb, ga ik het verder uitbouwen met dat je dus in een bepaalde periode kunt kijken hoevaak bepaalde dingen voorkomen, mits ze aan bepaalde voorwaarden voldoen (nog andere waardes die erbij horen in de Excel-regel).

Maar nogmaals allemaal heel erg bedankt *O* Nu kan ik weer verder.

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 10:47

TeeDee

CQB 241

Ah, dus toch: FindNext verwacht een Range.

Heart..pumps blood.Has nothing to do with emotion! Bored

Pagina: 1