Evleos Skrevet 3. desember 2007 Del Skrevet 3. desember 2007 (endret) Hei. Jeg har for tiden et lite problem; hvordan kan man i VBA sjekke om en verdi er prosent? Skal lage en liten sak som sjekker om alle prosentsatser i et regneark faller innenfor visse kriterier. Takker for all hjelp Endret 4. desember 2007 av lithium Lenke til kommentar
Evleos Skrevet 4. desember 2007 Forfatter Del Skrevet 4. desember 2007 bump! Redigerte posten min til et nytt spørsmål:) Lenke til kommentar
Xipil Skrevet 4. desember 2007 Del Skrevet 4. desember 2007 Er vel litt vanskelig å se om et tall er en prosent siden et tall er et tall. Må vel hente inn en streng med et tall og '%' tenget bak. Så se igjenom stringen om % tegnet er der. Hvis du har det er vel tallet en prosent av et eller annet. Eller så må du vel nesten hente inn tallene som du skal finne prosenten ut av så beregne denne i koden din. Når det er gjort bruke du den for å se om det er innenfor dine kriterier. Er vel den løsningen jeg kunne tenkte meg til akkurat nå. Lenke til kommentar
Evleos Skrevet 4. desember 2007 Forfatter Del Skrevet 4. desember 2007 Ja, det er jo mulig Tallene hentes ifra excel, og de cellene med %-sats er jo formatert som 'percentage'. Er det noen funksjon som kan sjekke for denne formateringen? Lenke til kommentar
Manfred Skrevet 4. desember 2007 Del Skrevet 4. desember 2007 ...nå er vel ikke dette .net da, men... Lenke til kommentar
Evleos Skrevet 4. desember 2007 Forfatter Del Skrevet 4. desember 2007 ...nå er vel ikke dette .net da, men... Du er som du vanlig er. Vil tro makroprog i excel 2007 har noe til felles med .Net språkene.... Lenke til kommentar
Manfred Skrevet 4. desember 2007 Del Skrevet 4. desember 2007 Jeg er som vanlig er? VB-scripting i Excel-makroer har så absolutt ingenting med .net å gjøre! Lenke til kommentar
Wubbable Skrevet 4. desember 2007 Del Skrevet 4. desember 2007 Han mener sikkert at du er litt pirkete Lenke til kommentar
KVTL Skrevet 4. desember 2007 Del Skrevet 4. desember 2007 Denne tråden var feilpostet og er blitt flyttet til riktig kategori. Lenke til kommentar
Harald Staff Skrevet 4. desember 2007 Del Skrevet 4. desember 2007 Denne sjekker om cella har nummerformat prosent: Sub test() MsgBox ErProsent(ActiveCell) End Sub Function ErProsent(Cel As Range) As Boolean ErProsent = InStr(Cel(1).NumberFormat, "%") End Function Manfred: Det er særs vanlig blant .net-programmerere og andre velutdannede å tro at VBA er VB-script. Veldig veldig feil. VBA er VB6, med typer, objekter, klasser, events og full pakke. Metodikken har heller ingenting med scripting å gjøre. Hermed også avlives myten om at VB6 er dødt, VBA er språket også i Office 2007. HTH. Beste hilsen Harald Lenke til kommentar
j000rn Skrevet 4. desember 2007 Del Skrevet 4. desember 2007 Hermed også avlives myten om at VB6 er dødt, VBA er språket også i Office 2007. Huffnei... VB6 er dødt. I Office 2007 har man også mulighet til å bruke .Net. At Microsoft har tatt med VBA for bakoverkompabilitet er forståelig, men litt leit også (min STERKT PERSONLIGE og IKKE OBJEKTIVE mening som jeg ikke har noen planer om å forsvare, og jeg vet du kommer til å klage på)... :!: Lenke til kommentar
GeirGrusom Skrevet 4. desember 2007 Del Skrevet 4. desember 2007 VBA lager P-Code uansett; VB6 lager native code med mindre du ber om at den skal lage P-Code. For de som ikke vet forskjellen så er P-Code noe ala Java Byte code, eller Common Intermediate Language, men det blir alltid interperated istedet for kompilert til native code. VB6 er ikke garantert at vil fungere i fremtidige versjoner av Windows, og etter det jeg har forstått, så følger ikke lenger MSVBM60.dll med Windows Vista. Microsoft avslutter all support for Visual Basic 6.0 i 2008. Man kan bruke .NET i Office 2007 også. Lenke til kommentar
Harald Staff Skrevet 4. desember 2007 Del Skrevet 4. desember 2007 Nei, man har etterhvert mulighet til å bygge ting til Office i .net, det er ikke det samme som "i office". Office snakker VB6. Jeg skjønner ikke hatet deres mot VB6, utover generell avsky mot annerledes og gammel. Men poenget mitt var egentlig at mange av dere, og mange jeg har med å gjøre, tror VBA er snakk om scripting og vbscript. Veldig feil, og da skal man kanskje være forsiktig med å vite alt også om Office-programmering. Beste hilsen Harald Lenke til kommentar
Evleos Skrevet 4. desember 2007 Forfatter Del Skrevet 4. desember 2007 (endret) Denne sjekker om cella har nummerformat prosent: Sub test() MsgBox ErProsent(ActiveCell) End Sub Function ErProsent(Cel As Range) As Boolean ErProsent = InStr(Cel(1).NumberFormat, "%") End Function Manfred: Det er særs vanlig blant .net-programmerere og andre velutdannede å tro at VBA er VB-script. Veldig veldig feil. VBA er VB6, med typer, objekter, klasser, events og full pakke. Metodikken har heller ingenting med scripting å gjøre. Hermed også avlives myten om at VB6 er dødt, VBA er språket også i Office 2007. HTH. Beste hilsen Harald Tusten tusen takk Harald! Denne setningen: InStr(Cel(1).NumberFormat, "%") har jeg sett etter i hele dag Endelig:D:D Blir en lang natt dette her nå Men sånn skal det være Endret 4. desember 2007 av lithium Lenke til kommentar
Harald Staff Skrevet 4. desember 2007 Del Skrevet 4. desember 2007 Så bra. Bare hyggelig vet du. Ha en god natt! Beste hilsen Harald Lenke til kommentar
GeirGrusom Skrevet 5. desember 2007 Del Skrevet 5. desember 2007 Du kan jo lese om VB6 på wikipedia, der står det at microsoft planlegger "obsolescence" altså at Visual Basic 6.0 programmer ikke engang lenger vil fungere. Visual Basic 6.0 mangler mye som alle andre programmeringsspråk har: - inheritence - interfaces (støttes gjennom COM, men man kan ikke eksplisitt bruke interfaces eller lage dem) - delegates er støttet på samme måte som i Java, gjennom interfaces. - Variable initialization - Unsigned datatyper - 64-bit integer - Man kan ikke returnere strukturer fra funksjoner I tillegg er VB6 er ukonsekvent språk (se Open funksjonen) og inneholder den utrolig latterlige funksjonen som gjør at programmereren kan definere array bounds Mange litt spesielle ting må man lage hacks og workarounds for å få til. Det er en million ting i veien med VB6. jeg har jobbet med VB6 i GANSKE mange år så jeg langer ikke bare dritt om noe jeg ikke kan noe om. .NET er en helt annen verden, språket er plutselig mer konsekvent(System.IO.FielStream, eller Microsoft.VisualBasic.FileOpen), støtter delegates, unsigned datatyper, interface, inheritence, 64-bit integer og man kan plutselig returnere strukturer fra funksjoner. Hva er da poenget med å fortsette med VB6 ("planned obsolescence") når i tillegg til å være et generelt bedre språk, også er gratis? Jeg tror Microsoft Office etterhvert vil gå over på .NET, fordi det er det nye satsingsområdet til Microsoft, og til å være generelt plant over mye bedre en VB6 på ALLE områder. Det er faktisk ingenting man kan gjøre enklere eller bedre i VB6 enn i .NET vil jeg påstå. Lenke til kommentar
ThorB Skrevet 5. desember 2007 Del Skrevet 5. desember 2007 Det er faktisk ingenting man kan gjøre enklere eller bedre i VB6 enn i .NET vil jeg påstå. bare en ting jeg vil tilføye. vil påstå at en del enkle program er mindre ressurskrevende når det er laget i vb6. av og til føles ting laget i vb.net som ekstremt trege. men det kan ha noe med lite effektive koder og slikt. en annen ting. i vb6 er det mulig å linke alle dll'er som trengs til programmet, slik at alt er i en pakke (en exe fil). det er en stor fordel synes jeg. men vb.net har den fordelen at man ikke trenger annet en å installere rammeverket så har du det som trengs. samt det andre folk har nevt tidligere her i tråden.... Lenke til kommentar
GeirGrusom Skrevet 5. desember 2007 Del Skrevet 5. desember 2007 Det kan hende VB.NET programmer tar mer plass i RAM på grunn av System.Dll, System.Windows.Forms.dll, Microsoft.VisualBasic.dll etc. men etter det jeg har forstått, så vil VB.NET kode faktisk gå raskere en VB6, da spesielt på en 64-bit prosessor, siden VB6 kun lager 32-bit programmer. Når det gjelder dll-er, så kan man bruke .NET linkeren (al.exe) for å kompilere en dll inn i en .exe fil, noe man ikke kan gjøre i vb6 Dette forutsetter at dette er en MSIL dll fil (altså må den være skrevet i C#, VB.NET eller C++/CLI) Visual Basic is criticized for its poor memory management and non-standard programming constructs which is said to result in poor programming practices and inefficient outputs. When programming in Visual Basic, it can sometimes be hard to tell if a variable is a reference to an object, or is the explicit object. In the same vein, it can sometimes be difficult to tell if an operation will result in a copy of a reference to an object, or a copy of the entire object. This ambiguity could result in unexpected results or poor program performance. Wikipedia Lenke til kommentar
ThorB Skrevet 5. desember 2007 Del Skrevet 5. desember 2007 (endret) Når det gjelder dll-er, så kan man bruke .NET linkeren (al.exe) for å kompilere en dll inn i en .exe fil, noe man ikke kan gjøre i vb6 vb6 har ikke en microsoft laga dll-linker nei.. men man kan linke dll filer inn i en kompilert exe fil med tredjeparts programmer... slik at det blir kun 1 exe-fil med dll filer inkludert i den fila. det var forresten nytt for meg at vb.net kan gjøre det. men uannsett, må du vel inn med et helt rammeverk i vb.net? du kan vel ikke linke alt slik at den blir så og si uavhenig av rammeverket? Endret 5. desember 2007 av thor918 Lenke til kommentar
GeirGrusom Skrevet 5. desember 2007 Del Skrevet 5. desember 2007 Nei. Fordi et .NET program er avhengig av JIT compileren. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå