Tag: vba

使用InputBox将用户input作为文本string作为公式中的variables返回

我想采取用户input,并在公式中插入它。 input框将有一个帐户名称,月份,types的字段。 这个variables需要返回sumifs公式sumifs , column E是这个帐户column c是这个月, column d是这个types。 我看了,但我发现所有涉及numbers inputsless得多的text string作为sumifs公式中的variables返回。 公式例如: =SUMIFS(E2:E100, A2:A100, "Account Name",C2:C100,"Month",D2:D100,"Type")

在单元格中inputVBA代码,取决于不同工作表中的单元格是否具有公式

我希望这里有人能帮助我。 我正在尝试创build一个macros来查看单元格中的单元格,以查看该单元格是否具有公式。 如果它有一个公式,它会在不同的工作表的同一个单元格中input1,如果不是,则input0.这是迄今为止我所知道的,但它给了我一个编译错误:接下来没有for。 Sub FormulaMap() Dim r As Integer Dim c As Integer For c = 9 To 17 For r = 11 To 18 If Sheets("Data").Cells(c & r).HasFormula = True Then Sheets("Map").Cells(c & r).Value = 1 Else: Sheets("Map").Cells(c & r).Value = 0 Next r Next c End Sub 任何帮助表示赞赏。

macros在“主”选项卡中的列表中在Excel中创build新选项卡,并在每个选项卡中填充具有相同名称的单元格

我已经find了在“主”选项卡中创build和命名新选项卡的代码,但是我还需要在每个新选项卡的单元格中填充名称。 此外,我需要每个新的选项卡包含一个模板(不同于主选项卡),这只是一个空白表与标题和一些公式内置到一些列。 每个新选项卡都应该有完全相同的模板,但只有一个单元格(表格的标题)被填充以匹配选项卡的名称。 最后,我需要用户打开工作簿,填写主选项卡中的列表(不一定总是相同的长度,可能只是1),然后按下button(运行macros),并使选项卡根据上述创build。 看来,也许我需要创build一个隐藏的选项卡,其中包含要复制的模板? 这可能吗? 任何指导在这里将不胜感激。 谢谢!

简单的Excel VBA循环需要

我试图在Excel VBA中创build一个简单的循环来抓取行中的信息,并根据特定单元格上的值将同一信息复制到下一行(或插入一个新行)。 例如,第1行有这些值(房屋1a,3级) 然后像这样在单元格H5上创build结果 (house 1a, bottom level) (house 1a, mid level) (house 1a, top level) 意味着房子1a的每一层被分成3排。 那么想象一下,我会随机选出10个不同级别的房子,名单不超过3个。 抱歉的括号,但这个编辑一直在想我正在写代码。 任何帮助将不胜感激。

在VSTO Addin for Excel中如何处理活动工作表中的button单击事件?

目前我正在开发一个使用VB.NET 2010和VSTO的Excel 2010插件。 活动工作表有一个button,其单击事件将由其自己的VBA代码处理。 现在我想在Addin中处理相同的button单击事件,而不影响其原始的VBAfunction。 可能吗? 我怎样才能做到这一点? 这个任务的前提是在Excel模板(包括VBA代码)上不允许修改任何内容。 这就是为什么我尝试从VB.NET的事件处理。 触发点在于Excel模板中的button被点击了,那么肯定会引发一定的事件,这个事件肯定会被VBAmacros处理,但是我想在VB.Net中增加另一个监听器(事件处理程序)同样的事件,所以我可以做一些额外的任务。 有没有人知道如何添加这样的事件处理程序? 谢谢。

IE.LocationURL只返回部分值

我希望你能帮助,因为我已经耗尽了我所知道的一切。 基本上我有一个VBAmacros在Internet Explorer上执行一些自动化操作,以使用SendKeys从我们的内部站点获取一些报告,在此macros中我也试图复制网站的URL,以便在电子表格中创build一个超链接。 现在起初,我使用SendKeys导航到地址栏,并使用SendKeys "^c", True将它复制,然后将其粘贴到我的电子表格中,但我决定要在全屏模式下运行自动化,以便我在通过网站进行填写时可以忽略地址栏和collections夹栏。 然而,当运行全屏模式,我无法导航到地址栏,所以我决定使用IE.LocationURL来获取页面的URL,但是当我将它分配给一个variables或将其放入一个单元格,它只返回部分URL。 该网站即时通讯设法访问在URL中有一个#(对不起,这是一个机密的网站,所以我不能把它放在这里,但它是在格式www.something.com/somethingelse/#thisBitWontDisplay …..)。 #之后的所有东西都不会出现。 我知道IE.LocationURL正在工作,因为当我在VBA编辑器中的本地variables位查看它显示IE.LocationURL的值是正确的URL,但就是这样,我可以访问其余的URL。 我试图格式化IE.LocationURL的输出,也是variables,但它不会工作。 有什么build议么? 谢谢

在Excel VBA中locking单元格

当我的工作簿受到保护时,下面的代码不起作用(当没有任何东西被保护时,它可以工作)。 我想要做的是有一个工作簿和表保护,除了less数几个单元格和特定的数据后,我希望所有单元格保护,请帮助。 Sub Workbook_Open() If Date >= DateSerial(2016, 1, 19) Then Worksheets("Jan").Protect Password:="123" ElseIf Date >= DateSerial(2016, 2, 28) Then Worksheets("FEB").Protect Password:="123" ElseIf Date >= DateSerial(2016, 3, 31) Then Worksheets("MAR").Protect Password:="123" ElseIf Date >= DateSerial(2016, 4, 30) Then Worksheets("Apr").Protect Password:="123" End If End Sub

如何检查Excel范围内隐藏的数字精度?

我比较这样的两个范围: Set cell1 = SampleFeature.Cells(row, column) Set cell2 = TestFeature.Cells(row, column) If cell1.value <> cell2.value Then DoSomething() End If 我有两个范围,在即时窗口中显示这些值: ?cell1.Value 0.45 ?cell2.Value 0.45 ?cell1.Value=cell2.Value False ?cell1-cell2 -5.55111512312578E-17 所以这很明显是一个浮点精度问题。 我的问题是,如何更改cell1.value <> cell2.value比较,以便它使用输出cell1.value时给出的精度,而不是“真正的”浮点值? 编辑:对不起,忘了提及这个检查也用于比较string。

让我的脚本在所有工作表中运行(Excel)

此代码在一张纸上工作,现在我试图让它在多张纸上工作,避免前两张(“AA”和“字频率”) 。 原始代码在这里 (见@ Jeeped的答案) 链接到工作表在这里 正在尝试从我find的相关线程调整代码(参考1,2 ),但是我不知道如何(和是否)将Ws.Name和Ws.Range对象应用到我现有的代码中。 它看起来像代码激活Sheet1使用With Worksheets("Sheet1") ,我试图用以下方法replace: 创buildFor循环函数byGroupCounter()以确定有多less工作表,并在所有现有的工作表中运行。 每个工作表将增加variables“我” For循环inGroupCounter()调用函数byGroup(i)在选定的工作表(即工作表“ i ”)上运行原始代码 byGroup()函数在工作表i上运行它的过程。 部分我相信我得到一个错误:replaceWith Worksheets("Sheet1")代码With Ws Ws = Worksheets(Sheet_Index)和Sheet_Index等于我 ,从byGroupCounter() 我相信我必须在.Range前添加Ws前缀,但是我一直在尝试的一切,我总是收到错误“无法在中断模式下执行代码”。 当前代码: Sub byGroupCounter() Dim i As Integer Application.ScreenUpdating = False For i = ActiveSheet.Index To Sheets.Count byGroup i Next i Application.ScreenUpdating = True End Sub Sub byGroup(ByVal Sheets_Index As Integer) […]

将工作表中的列复制到特定的行起始点

目标 将列从一个工作表复制到另一个工作表。 问题和例子 我想复制一列从S1到S2,但我想粘贴从第二行开始。 我可以把它复制到第一个单元格/行,但不是第二个。 代码示例适用于前四行,但是当我将B1更改为B2时,它未能尝试添加一个范围,但无济于事。 码: Dim s1 As Worksheet, s2 As Worksheet Set s1 = Sheets("BatchData") Set s2 = Sheets("Portal_Aligned") s1.Range("A:A" & LastRow).Copy s2.Range("B1") s1.Range("A:A" & LastRow).Copy s2.Range("B2:B" & LastRow) 参考: 如何select第二行到最后一行的范围