0

是否可以在单独的线程中以 100 毫秒的延迟在另一个函数之后运行一个函数。我想创建一个函数来更改 excel 中的一个单元格,并通过 Visual Basic 6 tnx 中的单独线程以 100ms 延迟运行另一个函数

4

4 回答 4

1

您可以使用 API

在您的声明部分添加以下内容:

Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

要使用它:

sleep 100' 休眠 0.1 秒

于 2012-11-16T11:36:44.303 回答
0

ActiveX DLL 实例也在它们自己的线程上运行,但都在一个进程中。因此,您不需要进程间通信的额外开销。当然,Excel 无论如何都会在单独的进程中运行。

于 2012-11-20T03:12:15.260 回答
0

可以通过创建 ActiveX exe 来实现。在此处查看 wqw 的答案,在 vb6 中使用线程编程。100ms 秒延迟将是 ~100ms 延迟。根据您希望延迟的准确程度,您可以使用精确到 10 毫秒左右的本机 VB 计时器,或者为了获得更高的分辨率,您可以使用多媒体计时器(使其难以调试),或者获得一个实现高分辨率计时器。

于 2012-11-15T22:20:36.783 回答
0

使用 ActiveX exe 在 VB6 中执行多线程是可能的。这些是“进程外”,因此可以加载并立即返回。我这样做已经很多年了,但我想我可能已经使用了一个计时器来让我加载类并立即返回,然后让类在其过程中继续工作。

不过,这种方法很可怕——以任何明智的方式管理它都是一场噩梦。

对您来说更好的选择是在 VB.Net 中编写您想要的内容(我认为您应该可以在 Express 版本中执行此操作),并将程序集设置为与 COM 兼容。然后您可以在您的 VBA 或其他任何内容中引用此功能。

于 2012-11-15T22:42:04.343 回答