1. 首页 > 科技

求助VBA高手

求助VBA高手

求助vba 高手

其实本来改一句就可以的,不过发现有几个小毛病,就一并改了给你发上来

Function action()

On Error Resume Next '遇错跳转,继续往下执行

Dim xlApp, xlBook, oExcelFile

oExcelFile = "D:\opc1.XLS" '全部代码只需改变文件的路径就可以,其他不用作任何改动

Dim isXlsOpen

isXlsOpen = False

Set xlApp = GetObject(, "Excel.Application") '获取EXCEL进程

If TypeName(xlApp) <> "Application" Then '检测到有Excel进程已经打开

Set xlApp = CreateObject("Excel.Application")

End If

xlBookFind = False

For Each oBook In xlApp.Workbooks '循环检查Excel进程打开的Workbooks

If LCase(oBook.FullName) = LCase(oExcelFile) Then '如果路径与所检查的文件一致

Set xlBook = oBook

xlBookFind = True

xlBook.Activate

Exit Function

End If

Next

If xlBookFind = False Then '#如果没有找到

xlApp.Visible = True '要打开的文件是否显示或是在后台运行

Set xlBook = xlApp.Workbooks.Open(oExcelFile)

End If

End Function

很高兴能够帮助到你,如果回答解决了你的问题的话,请"采纳"我的答案,谢谢!

求助EXCEL VBA 的高手们!!

VBA有高手写好了,不用VBA的方法说一个:

打开任意一个Excel文件,工具----选项----常规 页面,里面有一条“启动时打开此目录中的所有文件”,输入你要打开的这个文件夹的目录。保存并退出所有Excel。再重启Excel就能打开所有你想打开的Excel了。

(处理完了之后,最好把选项中的此目录清掉,否则每次开启Excel都会打开全部的这些Excel文档。当然,如果楼主每次都要进行这样的操作,就一直保留即可。)

Excel VBA 数据比较求助高手

你的数据应该是从别的地方倒过来的吧?直接用excel公式=A6=A11是true,但是你在VBE的立即窗口(ctrl+g)里输入:

print Range("A11")- Range("A6")

会显示

2.8421709430404E-14

也就是说A11比A6大那么一点点点点,估计是导入的数据在exce里l的浮点运算误差造成的。

原来的帖子我也看到了,强制类型以后精度变了,后面的位数被舍掉了,就相等了,对于不需要太精确的运算来说确实可以这样。

求教vba高手!!

分太少了,不可能每个题都给你写,写几个

Sub 第1题()

    Dim n%, x%

    n = Application.InputBox("请输入N值:", , , , , , , 1)

    If n = False Then Exit Sub

    For x = 1 To n

        If x Mod 2 = 1 Then

            sum = sum + 1 / x

        Else

            sum = sum - 1 / x

        End If

    Next

    Cells(2, 1) = sum

End Sub

Sub 第4题()

    For x = 1 To 5

        Cells(1, x) = Int(Rnd * 101)

    Next

    For Each Rng In Range("A1:E1")

        If Rng.Value Mod 5 = 0 Then

            sum = sum + Rng.Value

            Rng.Interior.ColorIndex = 3

        End If

    Next

    MsgBox "随机数是5的倍数的和为:" & sum

End Sub

Sub 第5题()

    Dim x, y, z

    For x = 1 To 125

        For y = 1 To 166

            If x = 4 And y = 148 Then Stop

            For z = 3 To 200 - x - y Step 3

                If x * 8 + y * 6 + z / 3 * 5 = 1000 And x + y + z = 200 Then

                    Debug.Print x; y; z

                End If

            Next z, y, x

End Sub

Sub 第6题()

    Dim x

    For x = 100 To 8000

        If x Mod 24 = 0 Then

            n = n + 1

            Cells(n, 1) = x

        End If

    Next

End Sub