Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 访问运行时错误6溢出_Vba_Ms Access - Fatal编程技术网

Vba 访问运行时错误6溢出

Vba 访问运行时错误6溢出,vba,ms-access,Vba,Ms Access,我有一个表格,可以做一个简单的计算,但是数字非常大 例如: xml 96276480 图2931829760 我将数据类型声明为Long,甚至做了一个CLng(Me.txtGraphics.value),但仍然得到溢出错误 这些数字来自文本框。 这是我的密码: Dim sgm As Long Dim XML As Long Dim prv As Long Dim base As Long Dim IETM As Long Dim Graphics As Long Dim total As Lon

我有一个表格,可以做一个简单的计算,但是数字非常大

例如: xml 96276480 图2931829760

我将数据类型声明为Long,甚至做了一个CLng(Me.txtGraphics.value),但仍然得到溢出错误 这些数字来自文本框。 这是我的密码:

Dim sgm As Long
Dim XML As Long
Dim prv As Long
Dim base As Long
Dim IETM As Long
Dim Graphics As Long
Dim total As Long
Dim pgCnt As Long
Const CXML = 2.5
Const CSGM = 6
Const CGraphic = 339
Dim pcSGM As Long
Dim pcXML As Long
Dim pcGraphic As Long

If Me.txtSGM.value = "" Then
  sgm = 0
Else
  sgm = Me.txtSGM.value
End If


If Me.txtXML.value = "" Then
  XML = 0
Else
  XML = Me.txtXML.value
End If

If Me.txtGraphics.value = "" Then
  Graphics = 0
Else
  Dim pics As Long
  pics = CLng(Me.txtGraphics.value)
  Graphics = CLng(pics)
End If

If Me.txtTotal.value = "" Then
  base = 0
Else
  base = Me.txtTotal.value
End If


prv = base


pcSGM = (CLng(sgm) / 1024) / CSGM
pcXML = (CLng(XML) / 1024) / CXML
pcGraphic = (CLng(Graphics) / 1024) / CGraphic


'total calculated newest SGM & XML values
total = (CLng(pcSGM)) + (CLng(pcXML)) + (CLng(pcGraphic))
谢谢你的帮助,
Max

VBA中的long是32位有符号整数(与VB.Net中的long相反,后者是64位)。因此,它可以容纳的最大值为2147483647

2931829760明显更大,因此会出现溢出

使用
Decimal
CDec
而不是
Long
CLng
将它们转换为小数,或者使用
Double
CDbl
将它们转换为双精度

CDbl
可能更快,但可能会导致浮点不准确问题


如果您确定您的代码将只在64位Access变量中执行,那么还可以使用
CLngLng
,它将代码转换为
LongLong
数据类型,VBA中的64位有符号整数是32位有符号整数(与VB.Net中的长整数(64位)相反)。因此,它可以容纳的最大值为2147483647

2931829760明显更大,因此会出现溢出

使用
Decimal
CDec
而不是
Long
CLng
将它们转换为小数,或者使用
Double
CDbl
将它们转换为双精度

CDbl
可能更快,但可能会导致浮点不准确问题


如果您确定您的代码将只在64位Access变量中执行,那么您也可以使用
CLngLng
,它将代码转换为
LongLong
数据类型,即64位有符号整数,在尝试使用CLngLng时,我会得到一个子函数或未定义的函数。我应该如何申报?将图片变暗为Long pics=CLngLng(Me.txtGraphics.value)Graphics=pics您也需要将某个东西变暗为Long。此外,我会避免使用
LongLong
,除非您是唯一的用户,并且您确定自己拥有64位office。如果
CLngLng
未定义,则您在32位office上,无法使用
LongLong
数据类型我收到错误“用户定义类型未定义”。这就是我说的Dim lngGraphic LongLong。我的系统是64位Office 2016。。。您的系统可能是64位的,但如果您得到了这个错误,您显然使用的是32位office。你可以在任务管理器中看到这一点,如果你在Win 10上,它会说Microsoft Access(32位)@Gustav将所有内容更改为Variant,然后CDec工作了谢谢!在尝试使用CLngLng时,我得到了一个子函数或未定义的函数。我应该如何申报?将图片变暗为Long pics=CLngLng(Me.txtGraphics.value)Graphics=pics您也需要将某个东西变暗为Long。此外,我会避免使用
LongLong
,除非您是唯一的用户,并且您确定自己拥有64位office。如果
CLngLng
未定义,则您在32位office上,无法使用
LongLong
数据类型我收到错误“用户定义类型未定义”。这就是我说的Dim lngGraphic LongLong。我的系统是64位Office 2016。。。您的系统可能是64位的,但如果您得到了这个错误,您显然使用的是32位office。你可以在任务管理器中看到这一点,如果你在Win 10上,它会说Microsoft Access(32位)@Gustav将所有内容更改为Variant,然后CDec工作了谢谢!