如果工作簿是从保存工作簿的位置打开的,则我试图阻止授权用户以外的其他用户打开工作簿。我希望用户将工作簿复制到另一个位置,然后打开它。我已经将下面的代码用于Access数据库,但我不知道如何将其修改为Excel。有人能帮忙吗?
Option Compare Database
Private Function AutoExec()
' Use Macro to run code and use the AutoExec() name
If VBA.InStr(1, CurrentDb.Name, "G:\") _
Or VBA.InStr(1, Curre
我试图通过使用VBA macro.For从excel中删除字符串中的字符,该字符串是“UOZV3A-WB101.8ml vbn958Xzlv2”,我需要它返回"UOZV3A-WB1“。它非常简单,我使用的代码是:
For Each c In Range("D2:D69")
If InStr(c.Value, "?") > 0 Then
c.Value = Left(c.Value, InStr(c.Value, "?") - 1)
End If
Next c
我遇到的问题是宏无法识别字符串中的单个字符("o"
我经常会得到一些名字,其中我需要处理和协调他们的一些信息。这些名称通常以许多不同的格式出现。我使用的当前VBA脚本如下:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Or Target.HasFormula Then Exit Sub
On Error Resume Next
If Not Intersect(Target, Range("B:B")) Is Nothing Then
Application.EnableEvent
如果我有一个像这样的专栏:
ColumnA
-------
NUMBER
VARCHAR(50 BYTE)
TIMESTAMP
我正在寻找一个vba函数,它的工作原理如下:
包含(“要搜索的字符串”,要在其中搜索的单元格) ie。=contains("VARCHAR",A2),如果单元格包含它(单元格中的任何位置-不需要开始或结束单元格),则使用"T“或"F”填充单元格(使用该函数)。
因此,在我的示例中:
ColumnB
-------
F
T
F
然后我还可以在其他VBA代码中使用此函数,如下所示:
If Len(A2) > 10 and contai
我希望函数能够搜索模式(D2、D3、D4、D5、T2、T3、T4)。它们都有赋值,例如,D5必须是2.4。
在Java中,我会使用switch语句,但是我对VBA非常陌生,所以我无法解决这个问题。这似乎很简单,但我想不出怎么做。
在伪码中,应该是这样的:
if myRange.Value contains D4
result = 2.0
if myRange.Value contains T4
result = 1.6
等。
有什么方法可以用某种形式的Regex检查和VBA的等效开关语句来实现呢?
谢谢
我正在编写一些VBA来优化Excel 2013中的工作流,我使用的是Windows 10机器。我使用一个简单的递归过程遍历文件结构,查找文件名中的特定内容,如下所示:
Function filePathToList(fileStart As String, firstString As String, secondString As String) As String
Dim FileSystem As Object
Dim HostFolder As String
HostFolder = fileStart
Set FileSystem = CreateObject("Scrip
我在excel中使用VBA编写了以下代码来删除其中一行中'*‘或'-’字符后的文本,但它给出了错误。有人能帮上忙吗?
Sub Removetext()
For each c In Range("A1:ZZ1")
c.Value = Left(c.Value, InStr(c.Value, "-") - 1)
Next C
End Sub
你好,我是VBA的新手,我有一个excel工作表,如下图所示,我希望运行每一行,直到最后一行删除"/“前面的字符。
下面是我的VBA代码。但是,我的代码目前只能在一个单元格上工作,我不知道如何将其更改为一个For循环,以便在所有行中运行到最后一行。另外,有些单元格不包含"/“,我只希望它是一个空单元格。我需要一些帮助我该如何解决这个问题?谢谢,如果有人能帮我做这件事的话,你真的很感激。
Sub String()
' String
Dim stringOriginal As String
stringOriginal = Range("A2").
我试图将一些值从vba函数传递给SQL。
这是我的SQL
SELECT *
FROM Hierarchy3
WHERE ID IN (getList("1 and 2"));
这是vba函数的定义:
Function getList(Measure As String) As String
当我调用函数时,得到: 1,2,3作为字符串。
如果我将SQL运行为
SELECT *
FROM Hierarchy3
WHERE ID IN (1,2,3);
它很好,但是把两者结合起来是行不通的。所以我想字符串类型错了,你能帮忙吗?
我有下面的vba代码,它与vba一起工作,“用于每个循环”。问题是,我在其他程序中使用了下面的代码,但在条件相同的情况下,我只想删除其中的循环。
代码应该在完成一次任务后执行并停止。简而言之,我希望删除循环,并以这样一种方式运行,即代码不带循环运行。
Set olNs = outlookApp.GetNamespace("MAPI")
Set Fldr = olNs.GetDefaultFolder(olFolderInbox)
Set myTasks = Fldr.Items
For Each olMail In myTasks
If (InStr(1, olMai
您可以帮助我提供VBA代码,以重命名所有工作表的调用值为基础的A1中的每个工作表,但只想挑选第一个单词作为工作表的名称
sub rename ()
for each sht in thisworkbook.worksheets
sht.name=sht.range("A1")
next sht
此VBA正在重命名所有工作表,但我只想从单元格A1中捕获前三个单词
例如。所以我需要的工作表名称是“"A1" = "Fund GQ Jan Q1 2019" GQ Jan”
我目前已经将我的VBA设置为读取文本文件(使用FileSystemObject)并查找某些字符串。这一切都很好用。但我试图实现的是让VBA通读文本,当它找到某个字符串(A),并在它下面的下一行中找到另一个字符串(B)时,它将执行某些操作。但前提是B紧跟在A之后。
示例:
Find in the following text "Bob's House" and in the next line after that "Electricity.
Text 1: - Return False
blablabla *Bob's House* blablabla
例如,我有一个包含两个数字0、1的列表,我想在vba中运行一个脚本,如下所示:
for i in list:
if i in string:
do something
end if
也就是说,我想先检查"0“是否在某个字符串中,然后执行一些操作,然后检查"1”是否在字符串中,然后做一些事情等等。在python中,我将有一个元组"0“、"1”并这样做,但是我如何在VBA中这样做呢?
作为VBA的新手,如果anyo能帮助我,我将不胜感激。
我希望根据整个字符串中特定文本的存在与否对行进行排序。
范围B包含:
Audi Car, Suzuki Bike, Honda Car, Volvo Bus, Benz Car, Yamaha Bike
所以我想要的VBA代码排序的基础上,如果它是一辆汽车,自行车或公交车。
在执行之后,范围B应该是这样排序的:
Audi Car, Benz Car, Honda Car, Suzuki Bike, Yamaha Bike, Volvo Bus
请帮帮忙。
我希望用子字符串替换每个选定单元格中的当前文本,该子字符串由(第一个实例的左边所有内容减去左边的一个空格组成。例如:Bob Smith (Director)变成了Bob Smith。 不幸的是,我在第四行(cell.Value =)得到了一个无效的过程或调用错误。我希望将其保留在VBA中,因为它是较大的VBA子例程中的许多操作之一。任何帮助都将不胜感激。谢谢! ThisWorkbook.Worksheets("Data").Range("A1:A4000").Select
For Each cell In Selection
position = In
如何在VBA中获得一个系列的x和y范围?
然后,VBA代码应该如下所示:
Sub Getxyrng(ch as chart)
Dim ser As series
Dim xrng As Range
Dim yrng As Range
Set ser = ch.SeriesCollection(1) ' the series with a x- and y-range already referenced
Set xrng = ser.xvalues 'this doesn't work
Set yrng = ser.Values 'what would t
此代码作为无效的转换日期返回:
‘2014年9月10日(星期三)上午6:53’
VBA IsDate函数用于检查表达式是Date还是表达式可以转换为有效的Date或Time。函数返回true或false。
我怎样才能使日期有效?
'-----------------------------------------
Dim x As Integer
x = ActiveCell.Row
'-----------------------------------------
Dim vDate As Variant
vDate = "Wednesday, S
我发现了下面的,它将删除指定字符之前的任何字符。
但是,我想让它移除指定字符之后的所有字符。
你能帮我做到这一点吗?
Sub RemoveAllButLastWord()
'Updateby20140612
Dim Rng As Range
Dim WorkRng As Range
Dim xChar As String
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("
我有这个VBA代码,搜索表名,代码可以工作。
如何将其更改为只搜索部分名称?全名狗,部分名字做*,类似这样的.
Dim xName As String
Dim xFound As Boolean
xName = InputBox("הכנס/י שם ספק לחיפוש בקובץ", "Sheet search")
If xName = "" Then Exit Sub
On Error Resume Next
ActiveWorkbook.Sheets(xName).Select
xFound = (Err = 0)
On Error
我有一个交叉表查询,它查询一组位置并获取它们的测量读数。我将重点放在测量读数上,所以我得到了一个表格,其中包含了每个行上的位置/日期组合的所有测量值。这可以很好地获取所有的数据。它还能很好地过滤每个字段的一个值。也就是说,WHERE LocationID = ? AND MeasureID = ?,但我真正需要的是像WHERE LocationID IN (?) AND MeasureID IN (?)这样的东西在哪里?是一个数组(或任何要完成的工作)。这个是可能的吗?
在我的表单中,我使用一个DAO.QueryDef对象来构建我的记录集。如果可能的话,我希望避免在VBA中构建整个查询字符串,
我有VBA代码,特别是将VBA VBScript库用于RegEx函数。最近,一些反病毒/恶意软件应用程序默认不允许在Office中使用VBScript。我喜欢正则表达式的易用性,但是我想让我的用户完全避免这个问题。
这就是我所用的。我用VBA尝试过许多功能,但没有任何运气。有什么建议吗..?
Public Function ValidateEmail(address As String) As Boolean
' Validate email address
Dim objRegExp As Object
On Error GoTo errHandler
Set