Toon posts:

[VB6] Excelwaardes uitlezen volgens cel-properties *

Pagina: 1
Acties:
  • 445 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoe kan ik in visual basic 6 aangeven hoeveel cijfers er achter de komma getoond moeten worden van een variabele.

Ik haal cijfers uit een excel sheet, de cijfers hebben soms wel 10 cijfers achter de komma en ik wil niet meer dan 2 cijfers achter de komma in vb getoond hebben.


Het ware probleem is eigenlijk dat de cijfers die ik ophaal uit excel in mijn vb app niet hetzelfde zijn. Dit komt omdat er celeigenschappen ingesteld zijn in de excel sheet: (VB leest dus kennelijk excel cellen uit zonder de celeigenschappen van Excel er op toe te passen)

Dus ik lees een cel uit in excel met de waarde 28,5, in vb6 zie ik deze waarde dan terug als bijvoorbeeld 28,49. Omdat het gaat om een brandbaarhieds risico analyse voor stoffen is het belangrijk dat de waarden kloppen. Is er dus een manier om de waardes uit excel sheet te lezen zoals ze getoond worden, dat de celeigenschappen dus ook toegepast worden.

ik hoop dat iemand hier iets mee kan , alvast bedankt voor eventueele reacties!!

  • Flard
  • Registratie: Februari 2001
  • Laatst online: 26-05 10:11
Antwoord op je eerste vraag is:
Visual Basic:
1
Format(Getal, "Fixed")


Op de tweede vraag kan ik je helaas geen antwoord geven, nog nooit in vb met excel gewerkt...

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Verwijderd schreef op 17 maart 2004 @ 10:51:
Dus ik lees een cel uit in excel met de waarde 28,5, in vb6 zie ik deze waarde dan terug als bijvoorbeeld 28,49.
Staat het dan niet in de Excel sheet al op 28,49 maar converteren de Cell eigenschappen deze niet naar 28,5?

Verwijderd

Topicstarter
questa schreef op 17 maart 2004 @ 10:57:
[...]


Staat het dan niet in de Excel sheet al op 28,49 maar converteren de Cell eigenschappen deze niet naar 28,5?
dat klopt in excel staat het als 28,49 en de celleigenschappen converteerd deze naar 28,5 (28,5 is dus de waarde die je in Excel ziet, de onderliggende waarde is echter 28,49). als ik deze waarde in vb laat zien dan krijg ik dus 28,49 te zien terwijl ik de waarde 28,5 wil hebben. De waarden die ik "zie" in Excel wil ik ook zien in vb.

  • GigaDave56
  • Registratie: Juni 2001
  • Laatst online: 14-12-2025
Van 28,49 naar 28,5 is gewoon afronding. Daar kan je toch de Round-functie voor gebruiken?

Not so Giga One
> I'd sell my soul for you, babe
> For money to burn, for you
> I'd give you all and have none, babe
> Just to, just to, to have you here by me... [Scooter - Rebel yell]


Verwijderd

Topicstarter
GigaDave56 schreef op 17 maart 2004 @ 11:11:
Van 28,49 naar 28,5 is gewoon afronding. Daar kan je toch de Round-functie voor gebruiken?
Van een Excel sheet met ongeveer 100 waardes wil ik de waardes in vb6 hebben. Elke cel heeft weer andere cel eigenschappen . Ik zou voor alle Excel celeigenschappen wel iets kunnen maken in vb. Toch zou ik graag de waarden die ik zie uit de Excel sheet willen hebben zonder dat ik hoef te knutsellen aan deze cijfers in VB.
Ik moet namelijk wel heel zeker zijn dat het allemaal klopt aangezien het gaat om een risiso analyse.

  • GigaDave56
  • Registratie: Juni 2001
  • Laatst online: 14-12-2025
Als (pseudo code):
code:
1
application.textbox.text=excel.werkbald.cel(x,y)

28,49 opleverd ipv 28,5 ben ik bang dat je zelf iets moet fabriceren om de waardes visueel overeen te laten stemmen. Ik heb wat geprobeerd met onderstaande code, uit VB boek dat ik nu niet bij me heb, om celeigenschappen op te vragen. Dit is niet gelukt. Ik ga vanavond het boek even raadplegen.
Maar een aangepaste Round of Format functie maken in VB is niet moeilijk en voor het behandelen van veel waardes is de Do-Loop uitgevonden :)

Visual Basic:
1
2
3
4
Dim objExcel As Excel.Application
Set objExcel = New Excel.Application
objExcel.Workbooks.Open ("test.xls")
sNewEntry = objExcel.ActiveSheet.Cells(1, 1)


edit:

Bedankt, Mart voor de link.

[ Voor 5% gewijzigd door GigaDave56 op 17-03-2004 12:18 . Reden: Bedankje aan Mart ]

Not so Giga One
> I'd sell my soul for you, babe
> For money to burn, for you
> I'd give you all and have none, babe
> Just to, just to, to have you here by me... [Scooter - Rebel yell]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Titel prefixed en opgeleukt, let daar op aub :)

Professionele website nodig?


  • Mart!
  • Registratie: Februari 2000
  • Laatst online: 25-05 15:37
Hier kun je wel wat mee denk ik: http://www.cpearson.com/excel/values.htm

Cell Values In VBA

When you are writing code in VBA, you can use the Text property of a Range object to get the text which is displayed on the screen. The Value property returns the actual value of the cell. For example,

Range("C1").Value = 0.49999999
Range("C1").NumberFormat = "0.00"
Debug.Print "The Value property is: " & Range("C1").Value
Debug.Print "The Text property is: " & Range("C1").Text

The Text property is read-only. You cannot assign a value to this property.

Waarschijnlijk dat:
excel.werkbald.cel(x,y) (.value is default)
alleen hoeft te worden veranderd in:
excel.werkbald.cel(x,y).text

Mar dat weet ik niet zeker ;)

[ Voor 33% gewijzigd door Mart! op 17-03-2004 12:08 ]


Verwijderd

Topicstarter
GigaDave56 schreef op 17 maart 2004 @ 11:56:
Als (pseudo code):
code:
1
application.textbox.text=excel.werkbald.cel(x,y)

Maar een aangepaste Round of Format functie maken in VB is niet moeilijk en voor het behandelen van veel waardes is de Do-Loop uitgevonden :)
het probleem is dat niet alle cijfers afgerond moeten worden maar dat alle cijfers andere celeigenschappen hebben. ik moet dus ongeveer 40 cijfers omknutselen zodat ze de zelfde waarden hebben zoals in Excel. Ik ben bang dat er fouten in gaan sluipen wat echt niet kan. Er moet toch een manier zijn om de cel waardes van Excel te kunnen pakken (met de celeigenschappen)

zelf gebruik ik zoiets, misschien dat jou manier wel de visuele waarde pakt
code:
1
getal =Excel.Application.Range("B16")

Verwijderd

Verwijderd schreef op 17 maart 2004 @ 12:10:
[...]
ik moet dus ongeveer 40 cijfers omknutselen zodat ze de zelfde waarden hebben zoals in Excel.
Als je nou eerst de cellen kopieert met plakken speciaal alleen VALUES en dan die cellen importeert als string in VB?

  • Mart!
  • Registratie: Februari 2000
  • Laatst online: 25-05 15:37
Plakken speciaal kopieert dus de volledige waarde, dat lost dus oo kniets op. Volgens mij moet je echt iets met de .text property doen van een cell. Deze geeft de display-waarde van de cell terug, zie mijn voorbeeld hierboven...

[ Voor 3% gewijzigd door Mart! op 17-03-2004 12:16 ]


Verwijderd

Topicstarter
Verwijderd schreef op 17 maart 2004 @ 12:12:
[...]


Als je nou eerst de cellen kopieert met plakken speciaal alleen VALUES en dan die cellen importeert als string in VB?
De cellen hebben variabelen waarden d.m.v een dropdownbox die in de Excel sheet gebruikt worden. jaja het wordt er niet makkelijker op maar bovenstaande message van Mart! gaat me volgens mij uit de brandt helpen.

Verwijderd

Mart! schreef op 17 maart 2004 @ 12:15:
Plakken speciaal kopieert dus de volledige waarde, dat lost dus oo kniets op.
Je hebt gelijk ma ik heb ff iets geprobeerd:
Je moet de values binnen halen als TEXT en niet als value!!!

Dus:
Cells(, ).Text

en niet
Cells(, ).Value

Dan krijg je hem geformateerd!

Edit:
Zie nu dat je dat ook al zei.... :X

[ Voor 7% gewijzigd door Verwijderd op 17-03-2004 12:29 ]


Verwijderd

Topicstarter
Super bedankt
.Text is inderdaad de oplossing. Zo pakt vb6 de waarde zoals ie in de Excel cel staat
code:
1
test1 = Excel.Application.Range("C27").Text

[ Voor 5% gewijzigd door Verwijderd op 17-03-2004 12:33 ]


  • GigaDave56
  • Registratie: Juni 2001
  • Laatst online: 14-12-2025
Verwijderd schreef op 17 maart 2004 @ 12:10:
[...]

zelf gebruik ik zoiets, misschien dat jou manier wel de visuele waarde pakt
code:
1
getal =Excel.Application.Range("B16")
Nou, dat weet ik niet. Ik gebruik de koppeling namelijk andersom. Ik gebruik Excel om gegevens uit mijn VB progs te printen. Dan, vind ik, is de adressering van een cel via zijn row en column waardes makkelijker dan de alfabetische column waarde uit te rekenen en die samen te voegen met zijn row waarde.

Not so Giga One
> I'd sell my soul for you, babe
> For money to burn, for you
> I'd give you all and have none, babe
> Just to, just to, to have you here by me... [Scooter - Rebel yell]

Pagina: 1