有没有办法在VBA中比较多个变量?例如:
Dim x As Integer
Dim y As Integer
Dim z As Integer
x = 99
y = 2
z = 3
我想返回最小的值。我知道我可以使用select case x > y来处理所有可能的排列,但是对于3个以上的变量,这似乎并不实用。
我已经尝试过工作表函数
solution = Application.WorksheetFunction.Min(x, y, z)
但这会返回2,我希望它返回要传递给另一个函数的变量名。
非常感谢,
编辑:如果这让人困惑,我很抱歉,我仍然是一个VBA新手。这是我更普遍的问题:
我
我需要将这段VBA代码转换成python。vba形式的代码如下: Function Findit(x As Integer, y As Integer, z As Integer) As Integer
Findit = x + y + z
If (y = x) Then
Findit = y
If (y < z) Then
Findit = z
EndIf
If (Findit <> x) Then
Findit = y
EndIf
Else
If (z = Findit) Then
Findit = y
Findit = x
EndIf
EndIf
End Functi
我有一个在VB.net中工作的同事给我的vb.net代码,但它在VBA语言中不起作用。我在一个VBA文件中使用了这段代码。有没有办法改变语法,使其在VBA中工作,或者在VBA中的VB.net中运行。或者有一种完全不同的方式来一起完成这一切?我还没有任何机会尝试更改代码或搜索答案。
Sub UpdateTVGData()
Dim vPath As String = GetPath("PR.G.ZMDPPL.TVG")
End Sub
Function GetPath(ByVal vFIle As String) As String
Dim Path
我有一系列Excel工作簿,它们的某些数据依赖于单独的工作簿。因此,当主工作簿打开时,我需要数据工作簿自动打开。为了让非技术终端用户保持简单,我将数据工作簿隐藏起来。但是,我需要能够同时处理两个工作簿。因此,我尝试设置一个标志(links_opened)来指定主工作簿打开时数据工作簿是否已经打开。说句公道话,这是我第一次和VBA打交道,我觉得很奇怪。
下面是我代码的相关部分:
Option Explicit
Dim w As Workbooks
Dim links_opened As Boolean
links_opened = False ' This is where VBA r
这段代码一开始只是个笑话,但后来变得有点…了我正在试着写这段代码,但是当他们输入的数字是‘9’时,我想不出怎么让冥王星的代码打印出来。但是我唯一能得到的就是if语句…的代码。当我想让它打印elif语句…时如果有人知道解决这个问题的方法,请让我知道! while True:
amnt = input('Okay, how many planets are in this solar sytem? ')
help = int(amnt)
ast = int(amnt) * 89990189
howMany = print('That means there
当我执行这段代码时,只执行了print("it is greater than zero"),但有两种情况是真的,我尝试使用fallthrough关键字,但它执行下一个case块,即使它是假的,不管是什么,
这反过来又提出了另一个问题,什么时候应该使用fallthrough关键字?如果我想强制执行下一个代码块,为什么不直接将代码插入到fallthrough所在的同一个块中呢?
有没有办法让下面的示例打印所有求值为true的案例,同时仍然排除所有求值为false的案例?
let number = 1
switch number {
case _ where number >
我正在使用以下代码片段启动一个运行良好的grpc服务器。但是,每当我需要将新代码部署到服务器时,重启服务器的正确方法是什么?我是不是应该干掉服务器进程,让客户端来处理错误消息?或者,有没有办法像独角兽一样启用主/从属模式?
s = GRPC::RpcServer.new
s.run_till_terminated
我写了这段代码,使用ontime函数每秒运行一次过程:
Sub startTimer()
Application.OnTime (Now + TimeValue("00:00:01")), "increment"
End Sub
Sub increment()
'some code here
startTimer
End Sub
代码运行得很好,但是有没有办法增加几分之一秒(例如:10ms)?
我在access vba中使用了下面的代码。这段代码给了我输入框,让我输入值,它更新了access表中输入的值。有没有可能给出输入框的组合框实例。我可以从该组合框中选择所需的输入。如果可能的话,请告诉我。
Dim qry As String
qry = "UPDATE Data_Table SET Data_Table.Workgroup = [Workgroup Name]WHERE (((Data_Table.Workgroup) Is Null));"
DoCmd.RunSQL qry
我正在处理Word中的VBA宏,其中包括调用EditFind对话框窗口。
如果Word多次搜索文档并找到要搜索的内容,则在关闭对话框窗口后,我会收到错误消息“运行时错误5453. Word已完成对文档的搜索”。
有没有可能让它消失?它会让将要使用它的人感到困惑,因为最终它会找到它要找的东西,但会停止我的宏。
With Dialogs(wdDialogEditFind)
.MatchCase = False
.Show
End With
我遇到一个问题,我试图在任何outlook文件夹中查找至少一个联系人。我有一个递归函数,它遍历文件夹中的项目,如果项目的类型是contact,那么我们将其添加到列表中。然而,当文件夹中有大量的记录,比如4000个项目时,这段代码的运行速度非常慢。
有没有什么方法只是为了获得联系人,或者有没有办法让这段代码更有效率?
foreach (var item in folderBase.Items)
{
if (returnFirst && result.Count > 0)
break;
if ((item is Outlook.Contact
在我的excel中,我在两行中有两个标题,我根据这些标题为每行上载值。如果两个标头的组合已经可用,则将更新该行中的值。如果该组合不可用,则会创建一个新列。
示例Excel
如图所示,如果我再次发现列2和列B组合,我可以针对列2和列B更新新行中的值。如果有另一个标题组合,比如列5和列B,那么它将创建一个新列。
使用VBA,我只能检查一个列标题,但不能检查标题的组合。我使用了下面的代码。
Set c=ws.Range("B2",ws.Cells(2,Columns.Count)).Find:=What(d,1)
IF c is Nothing Then
My code
Else`