我在excel的VBA中声明了下面给定的函数。在尝试从excel中调用相同的单元格时,它显示0。
Function AddNumber(num1 As Integer, num2 As Integer) As Integer
Dim sumValue As Integer
sumValue = num1 + num2
End Function
Cells函数调用:
=AddNumber(2,5)
结果:0
评估时出错:
#NAME?
我最初有一个VBA函数,它返回一个二维变量数组:
Public Function SplitIntoCells(some_data As String) As Variant()
End Function
我使用Formula数组语法从另一个vba函数调用它:
Public Function MyWrapper() as Variant
MyWrapper = SplitIntoCells("somestring")
End Function
在Excel中,如果我选择了一个足够大的范围,然后执行以下操作:
=MyWrapper()
紧接着是CTRL+SHIFT+ENT
我现在正在努力理解别人在MS Access VBA中的代码。
他定义了一个这样的函数
Function transferTable(tableType As String) As Boolean
当调用该函数时,它看起来如下所示
transferTable = True
根据参数tableType,有几个select case语句。例如:
Select Case tableType
Case "rc": range = "A" & row & ":AD" & row
Case "66
我在excel中有一个VBA宏,运行良好已经有一段时间了。我已经对这些循环进行了更改,突然之间代码没有编译:
编译错误: Wend没有时间
我尝试过更改While...Loop循环,但是我得到了等价的
编译错误:循环而不做
下面是我的代码结构:
'This loop is fine
While '(code for evaluation)
'code to run in loop
Wend
While '(more eval code)
'code
While '(eval code)
'code
Wend
我试图将一个集合传递给一个VBA函数,但是我得到了一个似乎无法修复的编译错误。
这是一个给出错误的简化示例。
Sub test()
Dim fooString As String
Dim fooCollection As collection
Set fooCollection = New collection
useString (fooString)
useCollection (fooCollection)
End Sub
Public Function useString(foo As String)
MsgBox ("here
我的问题是,我不知道在VBA中调用什么函数(在C++中)或方法(在Java中)。
它们都存在,所以我查了一下subs?我认为这是相似的,但根据我的理解,它们不会返回任何东西。
我没有接受过任何正式的VBA培训,所以我在这方面不太在行。我想创建一个函数(或者方法或者sub)来完成这个for循环正在做的事情:
useInput = titles.Text
useRec = rec.Text
lastRow = 1
For Each rngCell In rngData.Columns(1).Cells 'Traverse each row in Spreadsheet
If useInp
在VBA中可以忽略函数的返回值吗?
我现在要做的是:
Dim returnValue As Long 'This line is mandatory since I use Opition Explicit
returnValue = MsgBox("...")
我想做什么
MsgBox("...")
在C++中,我会以这样的方式解决这个问题:
(void) MsgBox("...")
(如何)我可以在Excel中解决这个问题?
我正在从C# dll中定义的excel中的VBA脚本实例化一个COM对象。我实例化的C#类有一个终结器,它执行垃圾收集,特别是它引用的其他MS Office对象,我应该看到这些对象在任务管理器中出现和消失。事实上,单元测试表明,当调用dll时,Office进程会出现,当它完成时,Office进程会消失。
当从VBA调用dll时,我注意到进程在VBA函数结束后仍保持打开状态,即对象在被调用后未被清除,这使我相信VBA不会释放COM对象。
我的函数看起来像这样:
Function Raz(inp As String)
Dim o: Set o = CreateObject("foo.ba
我已经开始尝试编写一些VBA来执行一些查询,但我被第一个障碍卡住了。这给出了一个错误3078,这显然意味着它找不到表或查询。该表肯定存在,并且拼写正确。确实,SQL运行得很好--我对它进行了测试。我做错了什么? Public Function Tester()
str_tbl = "tblGames_atp"
str_mkvrec = "SELECT * FROM " & str_tbl
dbl_fs_pct = DSum("FS", str_mkvrec)
End Function
我正在创建一个C#应用程序,它必须在Access mdb数据库文件中调用subs。
我已经在mdb文件中创建了一个测试子,我可以从C#调用它并传递它的参数。这一切都很好,但我想将结果传回C#。我知道我不能用一个函数来完成这个任务,那么是否可以通过引用传递变量,然后vba可以更改变量,然后我得到结果呢?我试过以下几种方法,但不起作用。有人知道这是否可能吗?
谢谢
VBA测试子:
Sub test(Byref p1 As String)
p1="bar"
MsgBox p1
End Sub
从C#:调用它
Access.Application oAccess = new
我从Excel工作表中调用VBA函数。当我在VBA函数的代码中更改一个单元格时,Excel试图再次执行该函数(在第二次迭代和.)
示例:如果您有代码:
Function test() As Variant
Range("A1") = 1
test = "test"
End Function
当您在任何地方使用"=test()"时,它将返回#VALUE!。调试将显示,当您更新A1时,它将尝试重新执行test()。
您能阻止Excel这样做吗?例如说‘在我完成这个功能之前不要更新我的任何号码’?我尝试过Application.Calc
我对c#还是个新手,有些东西我还不能完全掌握:
例如,在VBA中,如果在整个应用程序中有一些我需要的代码,我会将它放在一个函数中,然后在需要的地方调用它,只需使用该函数的名称,例如
Sub Something()
If variable = x then
RunMyFunction
end if
End Sub
在c#中有没有类似的调用可重用代码的方法?我确实意识到这与我以前的工作是完全不同的。
谢谢
在VBA中,我需要导入几个R生成的CSV文件。但是,split函数不能正常工作并给出了Type mismatch。我最好的猜测是: VBA在每个导入的行之间添加了双引号。所以第一行变成了" 47.27284, 130.5583, 44.826609, 189.905367"。我尝试使用replace或remove the first and last character删除双引号,但错误仍然存在。对这个问题有什么建议吗?
CSV文件
dose_BMD_r, dose_ED_r, dose_BMD_c, dose_ED_c
47.27284, 130.5583,
我正在尝试使用VBA更改Excel 2015中状态栏中显示的文本。然而,它似乎没有更新。消息"Ready“仍然存在。
Function testStatusBar(delay As Long)
Dim progress As Long
For progress = 1 To delay
Application.StatusBar = "Progress: test ongoing ...." & (progress / delay) & "%"
DoEvents
Next progress
Application.Sta
我写了一些VBA来加深我对Byref和Byval的理解。这就是我所用的:
Private Function Checkcase()
Dim i As Integer
i = 1
Debug.Print i
num(i)
Debug.Print i
End Function
Public Function num(ByRef i As Integer)
i = 5
End Function
输出
1
1
但是,当我在call前面使用num(i)关键字时,例如:
call num(i)
输出更改为
1
5
在这两种情况下,我都期望输出为1
我不确定如何在vba中实现返回字符串的方法。例如,在c#中,我可以调用像这样的方法;
public string ReturnString()
{
return "Hi";
}
但是,如果我想在VBA中调用也会返回字符串的代码,我该如何实现呢?例如,如果我想让onclick事件返回一串电子邮件;
Public Function EmailAll() As String
Dim employeeSQL As String
Dim employeeRS As DAO.Recordset
'Define SQL to loop
emp
我有以下功能:
Function importCSV(fileName As Variant) As Boolean
' some code
' no importCSV = TRUE
end Function
我调用这个函数
importCSV (fileName As Variant)
每做一次都可以,萌芽时有一个修改的功能。
Function importCSV(fileName As Variant, linkToHeader As Boolean) As Boolean
' some code
' no importCSV = TR
嗨,我在excel 2013 vba工作,我想把一个工作表对象传递给一个类函数:
“类模块Class1”
Sub receive(ByRef ws As Worksheet)
msgbox ws.name
End Sub
使用以下方法调用类方法接收:
Sub passToClass()
Dim ws as Worksheet
Set ws = ThisWorkbook.Worksheets("sheet1")
Dim myClass As New Class1
myClass.receive(ws) ' Run-time Error '4
我正在学习Linux内核模块的开发。我阅读了文章和教程,并找到了一个为一个简单的char设备提供源代码的站点。
在代码中,__must_check用于一个函数。
这是原型:
__must_check int register_device(void);
这是一项功能:
int register_device(void)
{
int result = 0;
printk( KERN_NOTICE "Simple-driver: register_device() is called." );
result = register_chrdev( 0, device_
考虑一下名为Module1的VBA模块中的以下代码
Sub StartTest()
Dim frm As UserForm1
Set frm = New UserForm1
frm.Show
End Sub
Sub Notify(fromForm As UserForm1)
MsgBox "Notified."
End Sub
以及UserForm1中的以下代码
Private Sub CommandButton1_Click()
Module1.Notify (Me)
End Sub
当我运行StartTest时,表单就会出现,当我单
在VBA excel程序中遇到问题。
Sub code(s)
...
code = t
End Sub
然后:
Sub CommandButton1_Click()
...
For i = 0 To size
current_y = code(string_array(i))
...
End Sub
当我运行程序时,我得到了这个错误“变量是必需的”(不确定,我正在使用日语版本的excel)。子CommandButton1_Click高亮显示,并在CommandButton1_Click中选择代码。我不知道为什么,尽管这一定很简单...
我使用了以下VBA代码:
Do While .Cell(i,1) <> Empty
' doing things
i = i+1
Loop
在Excel中循环访问列(具有Double/Integer值)。然后,我发现了一种情况,每当单元格的值为0时,测试的计算结果都为False。我不知道这个案例和正常工作的案例有什么不同。
如果我将测试更改为:
Do While Not IsEmpty(.Cell(i,1))
..
Loop
它工作得很好。所以我的问题是: IsEmpty()和=Empty的计算方式有什么不同?对于值为0的单元格,在什么情况下=Empty将计算为
Function PrintTableDefs()
Dim aDB As DAO.Database
Dim aTD As DAO.TableDef
Dim aTableName As String
Dim aForeignTableName As String
Dim aString As String
Dim count As Integer
Set count = 0
Set aDB = CurrentDb()
For Each aTD In aDB.TableDefs
Debug.Print aTD.Name
Debug.Print aTD.Connect
Debug.
我在牢房里有这样的公式:
=GetData("Channel_01","Chicago")
它执行以下代码:
Public Function GetData(ChannelCode As String, Key As String) As String
Dim sql As String
Dim cmd As New ADODB.Command
Dim outputTo As Range
Set outputTo = Application.Caller
sql = "select * from Chann