vba转c#的问题

honey3565 2016-10-25 02:54:19
'
Sub Macro1()
'

'
' ActiveSheet.Unprotect
Range("F47").GoalSeek Goal:=1, ChangingCell:=Range("F46")
End Sub
'

'************************************************************
Sub Macro2()
' Macro2 Macro
'
'

'
Range("F52").Select
Range("F52").GoalSeek Goal:=1, ChangingCell:=Range("F42")
Range("F53").Select
Range("F53").GoalSeek Goal:=1, ChangingCell:=Range("F38")
End Sub
'*******************************************
Sub Macro3()
'
' Macro3 Macro
'
'
'
Set WS1 = Worksheets(ActiveCell.Worksheet.Name)
' MsgBox ActiveCell.Worksheet.Name
'
Application.MaxChange = 0.000001
ActiveWorkbook.PrecisionAsDisplayed = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

For I = 1 To 100
Application.Run "Macro1"
Application.Run "Macro2"
a = WS1.Cells(47, 6)
b = WS1.Cells(52, 6)
c = WS1.Cells(53, 6)
If ((a > 0.999 And a < 1.001) And (b > 0.999 And b < 1.001) And (c > 0.999 And c < 1.001)) Then GoTo 200
100 Next I
200 Rem

End Sub


*********************************************

以上代码改编成C#,如果三个变量循环+0.000001,嵌套3层for循环会造成假死,请问有什么解决办法或其他思路?

for (F46 = 0.000001; F47 > 1.001 || F47 < 0.999; F46 = F46 + 0.000001)
{
for (F42 = 0.000001; F52 > 1.001 || F52 < 0.999; F42 =F42 + 0.000001)
{
for (F38 = 0.000001; F53 > 1.001 || F53 < 0.999; F38 = F38 + 0.000001)
{
...全文
149 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2016-10-25
  • 打赏
  • 举报
回复
造成假死,是因为主界面被阻塞,你开一个线程跑,就可以了。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧