如何以编程方式从Excel VBA项目中删除(已知)密码?
要明确:我想从VBA项目中删除密码,而不是工作簿或任何工作表.
我有一个数组prLst是一个整数列表.整数未排序,因为它们在数组中的位置表示电子表格中的特定列.我想知道如何在数组中找到一个特定的整数,并返回其索引.
如果不将数组转换为工作表上的范围,似乎没有任何资源可以显示我.这看起来有点复杂.这对VBA来说是不可能的吗?
如何在Excel中获取电子表格数据以从VBA中重新计算自己,而不仅仅是改变单元格值?
如何从调用VBA函数的单元格中获取?
换句话说,什么是INDIRECT(ROW(),COLUMN())的VBA等价物?
我不是在寻找ActiveCell.
我想要做的是有一个简单的函数ThisRow_Col(rColumn As String)返回它所调用的行的列X. 比如在B2中我调用= ThisRow_Col("A"),它应该返回A2的值.无论哪个单元活动,这都应该有效.
编辑:谢谢Charles的答案:Application.Caller.以下代码获取当前行的列X,与选择的位置无关:
Function ThisRow_Col(rColumn As Range)
' Return INDIRECT(rcolumn & ROW())
ThisRow_Col = Application.Caller.Worksheet.Cells(Application.Caller.Row, rColumn.Column).Value
End Function
Run Code Online (Sandbox Code Playgroud)
请注意,将列作为Range(ThisRow_Col(A1))传递比将其作为字符串传递更好,因为如果移动或插入列,Excel可以自动更新公式.当然,这一1行A1只是一个惯例.
是否可以基于正则表达式字符串在Outlook 2007中创建规则?
我想添加过滤器包含一个字符串,如消息:4000-10,四位数字后加破折号后两位数,这可以从任何东西0000-00到9999-99.
我正在使用它作为正则表达式:\b[0-9]{4}\-[0-9]{2}\b但过滤器不起作用.我也尝试过其他一些修改但没有运气.我无法在网上找到关于Outlook是否支持将正则表达式纳入规则的具体内容,所以我想我会问这里以防万一我浪费时间.
编辑:感谢Chris在下面的评论,我能够通过宏实现这个过滤器.我想我会在下面分享我的代码,以防它能够帮助其他人:
Sub JobNumberFilter(Message As Outlook.MailItem)
Dim MatchesSubject, MatchesBody
Dim RegEx As New RegExp
'e.g. 1000-10'
RegEx.Pattern = "([0-9]{4}-[0-9]{2})"
'Check for pattern in subject and body'
If (RegEx.Test(Message.Subject) Or RegEx.Test(Message.Body)) Then
Set MatchesSubject = RegEx.Execute(Message.Subject)
Set MatchesBody = RegEx.Execute(Message.Body)
If Not (MatchesSubject Is Nothing And MatchesBody Is Nothing) Then
'Assign "Job Number" category'
Message.Categories = "Job Number"
Message.Save
End If
End If
End Sub
Run Code Online (Sandbox Code Playgroud) 列A包含这样的数据(即频繁的空白单元格):
HEADING <-- this is A1
kfdsl
fdjgnm
fdkj
gdfkj
4353
fdjk <-- this is A9
Run Code Online (Sandbox Code Playgroud)
我希望能够获得具有数据的最后一个单元格的单元格引用.所以在上面的例子中我想返回:A9
我试过这个,但它停在第一个空白区(即返回A4)
numofrows = destsheet.Range("A2").End(xlDown).Row - 1
Run Code Online (Sandbox Code Playgroud) Function Foo(thiscell As Range) As Boolean
Foo = thiscell.hasFormula And (InStr(1, UCase(Split(thiscell.formula, Chr(40))(0)), "bar") > 0)
End Function
Run Code Online (Sandbox Code Playgroud)
此函数用于在(.)之前测试某个子字符串(在本例中为bar)的存在.
我遇到问题的情况是当传入函数的单元格为空时,thisCell.hasFormula为false,但是仍然正在评估和之后的语句.这给了我运行时超出范围错误的下标.
VBA是否真的继续评估And的第二个参数,即使第一个参数是假的?
请考虑以下工作表:
A B C D
1 COMPANY XVALUE YVALUE GROUP
2 Apple 45 35 red
3 Xerox 45 38 red
4 KMart 63 50 orange
5 Exxon 53 59 green
Run Code Online (Sandbox Code Playgroud)
我在Excel中使用了scatterplot函数来创建以下图表:

但是,图表中的每个点都有一个附加属性:GROUP.有四组:red,orange,black和green.我想相应地为每个点着色,这样我就可以看到一个模式(例如,组green几乎总是位于图表的左侧).因为我的列表是500行长,我不能手动执行此操作.我该如何自动执行此操作?
你能告诉我.NumberFormatExcel VBA 中的格式选项吗?如您所知,Excel 2010支持以下类型:

我知道我们可以将示例文本类型设置为:
.NumberFormat ="@"
Run Code Online (Sandbox Code Playgroud)
或者号码:
.NumberFormat = "0.00000"
Run Code Online (Sandbox Code Playgroud)
能告诉我VBA中其他类型的选项吗?
我目前正在开发一个新的Solidworks任务窗格,主要实现一些我用更方便的格式编写的"旧"宏.其中一些需要通过文本框进行用户输入,我希望将其包含在任务窗格中.
问题是,我找不到编写临时文件或将这些字符串导入我的宏的方法(我宁愿不花时间重写)
有没有其他方法将这些字符串发送到我的宏?Addin在C#中,我目前正在使用Solidworks"RunMacro2"方法.
谢谢!
编辑:在下面添加一些代码片段.有问题的主要宏是用于在整个程序集中传播自定义属性文件.
namespace Efficiency_Interface
{
[ComVisible(true)]
[ProgId(ProjMan_Tab_PROGID)]
public partial class Project_Management_Tab : UserControl
{
SwAddin SolidRun = new SwAddin();
public const string ProjMan_Tab_PROGID = "Proj Management";
public const string scratchFile = "C:\\keyStoneAddinScratch.txt";
StreamWriter writeText = new StreamWriter(scratchFile);
public Project_Management_Tab()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
foreach (var textBox in this.Controls.OfType<TextBox>())
{
writeText.WriteLine(textBox.Text);
}
writeText.Close();
SolidRun.runGen("proc");
}
}
}
Run Code Online (Sandbox Code Playgroud)
以上是我的任务窗格的基本代码.下面是我的主要插件类的代码片段,它还包含我的其他按钮的代码.
public void runCreate4Pack()
{
iSwApp.RunMacro2(macroPath + "CREATE 4 SIZE PACKAGE.swp", "", "", 0, …Run Code Online (Sandbox Code Playgroud) vba ×10
excel ×8
excel-vba ×4
.net ×1
add-in ×1
arrays ×1
c# ×1
cell ×1
charts ×1
excel-2010 ×1
find ×1
indexing ×1
operators ×1
outlook-2007 ×1
outlook-vba ×1
regex ×1
security ×1
solidworks ×1
vb.net ×1
vbscript ×1