Avatar billede martpe Nybegynder
19. september 2011 - 10:47 Der er 2 kommentarer

"Bit wise and" giver "Error 6 overflow", når værdien er over hvad der svarer til 32 bit.

Dim var1 As Double
Dim var2 As Double
Dim var3 As Double

Sub Bin()

var1 = Cells(J, 1)
var2 = Cells(J, 2)
var3 = var1 And var2

' denne "bit wise and" linje giver fejl (Error 6 overflow, når resultat er over 2^31.

Cells(J, 3) = var3
End Sub

Er der nogle, som har en løsning på, hvordan "beregningen" kan gennemføres uden fejlmelding?
Eller er der nogle, som ved hvordan en 64bits variabel kan type-castes til en 32bit
Avatar billede glvi93 Nybegynder
19. september 2011 - 17:27 #1
Hej martpe.
såvidt jeg kan forstå, har du deklareret dine objekter som skal til en celle.
Hvis der ikke er nogen specifik enkodning som ascii eller unicode,
vil jeg foreslå du laver en løkke, der hvor din bitwise and står.
så løkken kan måske ser sådan her ud:

Dim var1 As Double = Cells(J, 1)
Dim var2 As Double = Cells(J, 2)
Dim var3 As Double = var1 And var2
Dim int1 as Integer64
Dim int2 as Integer64
If Var1 And Var2 >= int1 then
  int1 = Var1 And Var2
End If

Men såvidt jeg kan læse på http://visualbasic.about.com/od/usingvbnet/a/datatypes.htm
er Double en 64bit, så jeg kan ikke forstå hvordan din bitwise and ikke vil tage højere end 31 bit.
Avatar billede martpe Nybegynder
20. september 2011 - 08:36 #2
Jeg har en løkke rundt om, som skal køre det antal gange, som der er tal i kolonne A og B. Men løkke eller ej, så ændrer det jo ikke ved det primære at der kommer overflow - nedenfor er har jeg skrevet koden, så den kun skal lave en bit wise and på A1 og B1 --> resultat i C1. Den kommer med fejl hvis A1 og B1 fx begge sættes til 2^32.

Sub Bin()

J = 1

var1 (værdi 2^32) = Cells(J, 1)
var2 (værdi 2^32) = Cells(J, 2)
var3 = var1 And var2

' Linjen med Var3 - "bit wise and" linjen - giver fejl (Error 6 overflow, når resultat er over 2^31.

Cells(J, 3) = var3
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester