| 查看: 339 | 回复: 1 | |||
mkluowen铜虫 (小有名气)
|
[求助]
求高手修正
|
|
新手,这段程序运行后没设想中的结果,求哪位高手给修改一下。十万火急 Private Sub Form_Click() Dim ix%, iy%, iz%, nx%, ny%, nz%, N01x#, N01y#, N01z#, C0x1#, C0y1#, C01z# Dim baindex01, baindex02, natome, namol, index0, index1 As Integer baindex01 = 1 baindex02 = 2 natom = 0 namol = 0 index0 = 1 index1 = 2 nd01 = 0 nb01 = 0 na01 = 0 natom = 0 nmole = 0 N01x = 0 N01y = 0 N01z = 0 C01x = 0.8773 C01y = -0.5773 C01x = 0.6773 Dim boxx, boxy, boxz As Double boxx = 4.91 boxy = 4.91 boxz = 4.91 Open "E:\NaCl.dat" For Output As 1 Dim Na01x(), Na01y(), Na01z(), Cl01x(), Cl01y(), Cl01z() As Double nx = Val(InputBox("输入nx", "nx must be integer and 0<nx<100", "1" )) ny = Val(InputBox("输入ny", "ny must be integer and 0<ny<100", "1" )) nz = Val(InputBox("输入nz", "nz must be integer and 0<nz<100", "1" )) ReDim Na01x(nx), Na01y(ny), Na01z(nz), Cl01x(nx), Cl01y(ny), Cl01z(nz) For ix = 1 To nx For iy = 1 To ny For iz = 1 To nz Na01x(ix) = N01x + (ix - 1) * boxx Na01y(iy) = N01y + (iy - 1) * boxy Na01z(iz) = N01z + (iz - 1) * boxz Cl01x(ix) = C01x + (ix - 1) * boxx Cl01y(iy) = C01y + (iy - 1) * boxy Cl01z(iz) = C01z + (iz - 1) * boxz Write #1, natom, namol + 1, "1", Na01x(ix), Na01y(iy), Na01z(iz) Write #1, natom, namol + 1, "2", Cl01x(ix), Cl01y(iy), Cl01z(iz) Next iz Next iy Next ix Close #1 End Sub [ Last edited by mkluowen on 2013-5-5 at 10:11 ] |
» 猜你喜欢
拟解决的关键科学问题还要不要写
已经有11人回复
救命帖
已经有5人回复
限项规定
已经有5人回复
为什么nbs上溴 没有产物点出现呢
已经有9人回复
招博士
已经有3人回复
存款400万可以在学校里躺平吗
已经有35人回复
最失望的一年
已经有18人回复
求推荐博导
已经有4人回复
求推荐英文EI期刊
已经有5人回复
疑惑?
已经有5人回复
ausir
木虫 (正式写手)
- 应助: 18 (小学生)
- 金币: 2008.2
- 红花: 4
- 帖子: 500
- 在线: 178.5小时
- 虫号: 1939287
- 注册: 2012-08-15
- 性别: GG
- 专业: 集成电路制造与封装
【答案】应助回帖
★ ★ ★ ★ ★
mkluowen: 金币+5, ★★★很有帮助 2013-05-16 15:48:50
mkluowen: 金币+5, ★★★很有帮助 2013-05-16 15:48:50
|
不是很清楚你想计算出怎样的结果。 但是这段程序的语法上并没有错什么。可以稍作更改的是变量定义语句,就是把所有的变量都必须声明,而不是只定义一行中的最后一个。这个采用Dim 是使用%,#或Integer, Double等没有区别。 Private Sub UserForm_Click() Dim ix%, iy%, iz%, nx%, ny%, nz%, N01x#, N01y#, N01z#, C0x1#, C0y1#, C01z# Dim baindex01 As Integer, baindex02 As Integer, natome As Integer, namol As Integer, index0 As Integer, index1 As Integer Dim boxx#, boxy#, boxz As Double Dim Na01x#(), Na01y#(), Na01z#(), Cl01x#(), Cl01y#(), Cl01z() As Double baindex01 = 1 baindex02 = 2 natom = 0 namol = 0 index0 = 1 index1 = 2 nd01 = 0 nb01 = 0 na01 = 0 natom = 0 nmole = 0 N01x = 0 N01y = 0 N01z = 0 C01x = 0.8773 C01y = -0.5773 C01x = 0.6773 boxx = 4.91 boxy = 4.91 boxz = 4.91 Open "E:\NaCl.dat" For Output As 1 nx = Val(InputBox("输入nx", "nx must be integer and 0<nx<100", "1" )ny = Val(InputBox("输入ny", "ny must be integer and 0<ny<100", "1" )nz = Val(InputBox("输入nz", "nz must be integer and 0<nz<100", "1" )ReDim Na01x(nx), Na01y(ny), Na01z(nz), Cl01x(nx), Cl01y(ny), Cl01z(nz) For ix = 1 To nx For iy = 1 To ny For iz = 1 To nz Na01x(ix) = N01x + (ix - 1) * boxx Na01y(iy) = N01y + (iy - 1) * boxy Na01z(iz) = N01z + (iz - 1) * boxz Cl01x(ix) = C01x + (ix - 1) * boxx Cl01y(iy) = C01y + (iy - 1) * boxy Cl01z(iz) = C01z + (iz - 1) * boxz Write #1, natom, namol + 1, "1", Na01x(ix), Na01y(iy), Na01z(iz) Write #1, natom, namol + 1, "2", Cl01x(ix), Cl01y(iy), Cl01z(iz) Next iz Next iy Next ix Close #1 MsgBox "Done" End Sub 这个好像是计算了一个立方体的顶点坐标和平移后的坐标。 |
2楼2013-05-14 13:13:22













回复此楼
)