| 查看: 356 | 回复: 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 ] |
» 猜你喜欢
版面费该交吗
已经有9人回复
体制内长辈说体制内绝大部分一辈子在底层,如同你们一样大部分普通教师忙且收入低
已经有13人回复
为什么中国大学工科教授们水了那么多所谓的顶会顶刊,但还是做不出宇树机器人?
已经有8人回复
面上可以超过30页吧?
已经有4人回复
“人文社科而论,许多学术研究还没有达到民国时期的水平”
已经有5人回复
什么是人一生最重要的?
已经有4人回复
今年春晚有几个节目很不错,点赞!
已经有12人回复
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













回复此楼
)