我正在尝试使用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
我使用的是Excel 2016 (Office主题:多姿多彩),不幸的是,当我用用户定义的文本编写代码在状态栏中显示时,状态栏将其背景色改为深绿色,而不是保留在vbButtonFace (&H8000000F)中。结果是一条不可读的状态栏文本消息,认为字体颜色仍如预期的深灰色。
我知道这不能直接由VBA来完成(请不要向我建议改变Office的主题.这不是一种选择!)
在搜索时,我发现了一些使用API函数、SendMessage和GetSysColor调用的代码,我对这些调用进行了重新排序,如下所示:
#If VBA7 Then
Public Declare PtrSafe Fu
我在想,是否有可能在Excel VBA中设置主工作簿,并在所有过程和函数上访问它? 因为我是VBA的新手,所以我不了解VBA使用的语法。 Dim MasterWB as Workbook
Set MasterWB = Workbooks.Open("Path to my Workbook") 但是,如果我想在另一个过程或函数中访问它,我会得到一个对象定义错误。 我不想在每个Sub或Function中声明对象。非常感谢!
我在excel电子表格中有一个数字数组,我试图使用用户定义的vba函数对这些数字进行排序(所有数字都>60),并且我希望将结果作为一个范围返回到同一个excel表中。
当我运行这个函数时,我会得到一个值错误,我不太确定这个错误是从哪里来的,因为我是VBA.I的新手,我非常希望能在解决这个问题方面提供一些指导。
数组Excel
Column A
200
50
23
789
Function trial(number As Range)
Dim cell As Range
Dim savearray() As Variant
Dim d As Long
F
这个小小的Excel VBA函数总是返回false,不管传入的是什么word。
Function SpellCheck(SomeWord As String)
SpellCheck = Application.CheckSpelling(SomeWord)
End Function
事实上,在集成开发环境中,我可以验证Application.CheckSpelling("hello")是否失败,尽管Excel拼写检查器可以检测到拼写错误。
如果拼写正确,我要做的就是为每个单词获取一个T/F值。
我研究过这个却什么都没发现。应该没那么难解决。我试图在Outlook中使用VBA打开Excel工作簿,但是它引发了一个不匹配的错误,我不知道如何修复。
Function openWorkbook()
Dim xlApp As Object
Dim sourceWB As Excel.Application
Set sourceWB = Workbooks.Open("Z:\Stress Test\GSST Daily\weekly report\June\GSST Daily Estimation week of 06.22.xlsx")
End Function
首先,这是我第一次尝试在vba中使用excel。我对此一无所知。
我尝试在excel中创建一个新函数,以在特定的单元格中设置一个值。
我有一个模块:
Public Function SETVALUE(cell As Range, newValue As Integer) As String
cell.value = newValue
SETVALUE = "-"
End Function
这是我的模块:
如果我在单元格A1中键入:A1,它就不能工作。
在单元格中,A1显示为#Value!,而在单元格中,A2没有显示任何内容。
问题:我想创建一个函数,它获取一个字符串并返回一个字典。在大量阅读之后,我准确地复制了一些问题中给出的代码,最终得到了一个看起来可行的解决方案。但有些事情我不明白。
这里的代码有点长,因为它包含了一些注释:
Private Sub testdictionary()
Dim dict_in_sub As Scripting.Dictionary
' Do I really need this??:
'Set dict_in_sub = New Scripting.Dictionary
' or this:
'Set dict_in_
嗨,我在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
实际上,我正在尝试将日历约会从一个outlook帐户导出到另一个outlook帐户,但是我尝试了很多次和结束,只是在excel表中提取约会并将其导入另一个帐户。我不需要对VBA有太多的了解,但我通过互联网得到了这个-
Private Sub Outlook_Vba_Get_Calendar_Item_Appoinments()
Dim oWorkbook As Workbook, Calendar_To_Excel_File As String
Dim oOutlook_Calendar As Outlook.Folder, oCalendar_Items As Outlo
我正在从一本书中学习VBA,其中的示例函数是:
Function CubeRoot(number)
CubeRoot = number ^ (1 / 3)
End Function
如果我从子过程调用该函数,就会得到正确的结果,但是当我试图在Excel中直接使用它时,我会在单元格中得到一个"FALSE“结果。我一步一步地看这本书,它并没有说要做任何我没有做过的事。我错过了什么/做错了什么,或者我需要改变一些选择?我正在使用Excel 2016。
编辑:,这是我在excel单元格中所写的:=CubeRoot(8),我得到的结果是FALSE。但是,如果单击fX按钮并弹出函数参数框,则显示的
在Excel2010中,下面描述的方法,ScreenUpdating工作正常。但是在2007年,它不会翻转,工作表操作也会在视觉上被看到。
VBA的使用:
Dim scrup As Boolean: scrup = DisableScreenUpdating(Application.ScreenUpdating)
方法声明:
Function DisableScreenUpdating(val As Boolean) As Boolean
'''''''''''''''
我试图将一些代码放在VBA中,在那里它将打开一个特定的文件夹,让我选择这个文件,然后继续运行我的代码。
目前,我所拥有的(下面)“工作”,因为它将打开一个文件夹,但通常它从一个通用的位置(桌面),但不会离开特定的文件夹位置,让我打开我想要的文件。
Dim Filename as String
filename = Application.GetOpenFilename(FileFilter:="Excel Files, *.xl*;*.xm*")
If filename <> False Then
Workbooks.Open filename:=filenam
‘在Excel-VBA中,有没有办法获得’我正在运行的进程名?例如,在Excel VBA中,我正在‘执行子mysub()。在这个子进程中,我想’将子进程名‘mysub’缓存在一个变量中,供以后使用。如何实现?
Sub mysub()
getmysubname = howtoget 'this is my variable to catch the sub name
Debug.Print getmysubname 'sub name is printed in debug window
End Sub
‘请提供完成此操作的方法
VBA中的函数没有特殊类型。我很难理解如何在Excel VBA中将函数作为参数添加到函数中。
我想要实现的东西是这样的:
function f(g as function, x as string) as string
f = g(x)
end function
目前,我有一组小函数,它们都在重复自己,但只调用了一个特定的函数。
是否可以在一个过程中声明静态变量,然后使用Excel VBA在多个不同的过程中使用此变量?
即
Public myvar as integer
Sub SetVar()
static myvar as integer
myvar=999
end sub
sub Usevar()
dim newvar as integer
newvar=myvar*0.5
end sub
我需要myvar被其他过程看到,而不是改变或“迷失”。如果myvar没有声明为静态变量,但更多的代码比变量“丢失”,那么上面的代码就可以工作。如果使用静态声明,则usevar过程看不到myvar
我在Excel2003中制作了一个日历来跟踪任务和类似的项目。我需要能够做的是通过VBA设置一个计时器。如下所示:
run_in_x_secs ( timetowait, function to exec)
有没有办法在excel vba中做到这一点,或者我应该尝试找到一个警报,通过命令行运行,并从VBA运行。
你会怎么做?
我希望在Excel中运行VBA脚本,并在某一时刻暂停,直到打开特定的工作簿。然后继续原始工作簿中的脚本。这是因为原始工作簿需要从新打开的工作簿中导入数据,然后关闭该新工作簿。我假设我应该使用某种Windows事件处理程序来监视诸如文件打开之类的事情。
正在使用的版本是MS windows 10和excel 2013
我是一个长期渴望Excel用户,但刚刚开始学习VBA。我正在使用下面的代码,但是当我试图运行Sub test时会出现一个错误
编译错误:未定义变量
你能帮我弄清楚是怎么回事吗?
Option Explicit
Function toFarenheit(degrees)
toFarenheit = (9 / 5) * degrees + 32
End Function
Function toCentigrade(degrees)
toCentigrade = (5 / 9) * degrees - 32
End Function
Sub test()
ans
我一直在努力学习更多关于excel的知识(特别是如何更好地利用VBA ),并在excel中制作了一个简单的RPG。
我试图创建一个相对简单的函数,但我遇到了一个似乎无法识别的错误。代码本身似乎没有任何错误,但我的目标是在Excel的普通视图中使用该函数,并检查一个字符串是否等于另一个工作表中的字符串。
基本上,=CheckMonster(A1)或类似的东西。但是,每当我尝试输入它时,我都会得到一个类型错误。
Function CheckMonster(mon As String)
Dim n As Integer
For n = 1 To 100
If mon = Worksheet
我想在excel vba中的一个模块中做一个简单的函数,这样我就可以在excel中使用它作为自定义函数。(我用的是excel 2003或2007,没关系)
我创建了一个函数(!)在一个新的工作簿中,它看起来像这样:
Function a()
Sheets(1).Range("A1").Value = 4
end function
但是当我尝试在sheet1上使用它时,它不起作用!我试过很多方法。
我如何才能让它工作(没有变通的方法,我想把它当做一个自定义函数使用)?
请帮帮忙。谢谢,gadym
在VBA中,我试图确定单元格是否包含错误值,例如,由于一个无效的函数。我的现有代码使用方法,但最近我遇到了一个导致错误阳性的情况。单元格不包含错误值,但Excel.WorksheetFunction.IsError返回true。另一个方法VBA.Information.IsError没有显示这种行为;它正确地返回false。
我能够确定,只有当单元格包含长度超过255个字符的值时,才会发生此问题。下面是验证行为的例程:
Sub IsErrorBehavior()
Dim i As Long
Dim str As String
Dim r1 As Range, r2 As
我在Excel中的VBA表单中遇到了一个问题,我正在尝试使用VLOOKUP从我在文本框中键入的内容中筛选组合框的值。我该如何实现这一点? 我的代码是: Private Sub btnTemplateSearch_Click()
Dim filterInfo As Range
Set filterInfo = Worksheets("InfoDump").Range("E2:F46")
txtTemplateFilter.Text = filterInfo.Columns(2).Value
Me.cboTemplateType.List = Applicati
下面我有一个Excel公式;
DATE(LEFT(A1,3),MID(A1,6,1),MID(A1,7,1))
我想把这个Excel公式转换成一个VBA用户定义的函数.
Public Function getDate(input_date As String)
'code to convert DATE(LEFT(A1,3),MID(A1,6,1),MID(A1,7,1)) to VBA
End Function
这是很棘手的,因为函数参数中有使用的函数。就像左内约会一样。
编辑:如果可能的话,我想直接在VBA函数中使用Excel公式,并尽量减少修改。在Excel中可以这样做吗
在excel-vba中,我有一个名为frmTemplateSelector的表单,当我选择这两个选项之一并单击“完成”时,该表单不会隐藏!
我从另一个模块调用frm.show,根据选择的不同,还会出现其他弹出窗口。
Private Sub btnDone_Click()
frmTemplateSelector.Hide
Exit Sub
End Sub
Private Sub btn1_Click()
name = "XYZ"
End Sub
Private Sub btn2_Click()
name = "ABC"
End S