可能重复: VB使用冒号将两条语句放在同一行上 我在Excel VBA中有以下声明 Public Const cdbArea = 1: Public Const cdbDist = 2: Public Const cdbChange1 = 4: Public Const cdbChange2 = 5: Public Const cdbTR = 5: Public Const crbArea = 1: Public Const crbDist = 2: Public Const crbTerr = 3: Public Const crbChange1 = 4: Public Const crbTR = 5: Public […]
希望你能帮助我,我想从excel文件中读取数据,而我在做的方式是在背景中创buildExcel应用程序的实例,但比提示有关VBAmacros – 禁用或启用它。 我有100个excel文件,我需要从中收集数据,所以如果我会被提示每一个文件,我最终将不会有效的方法。 虽然我是新手在Excel VBA世界,并开始怀疑是否有任何其他方式….. 我的问题是我可以用其他方式打开它们吗? 我find了…… ADODB,我觉得这可能对我有帮助。 所以我有代码如下。 作为第一件事我想从less数细胞读取数据。 我不知道如何读取数据。 我尝试阅读,你可以看到下面,但它会抛出错误。 Opennig连接顺利,查询执行也。 但是,我只是猜测,如何读取数据。 我使用VBA编辑器。 Sub hello_jet() Set cn = CreateObject("ADODB.Connection") With cn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=D:\test.xls" & _ "Extended Properties=Excel 8.0;" .Open End With strQuery = "SELECT * FROM [Sheet1$E36:E38]" Set rs = cn.Execute(strQuery) Do While Not rs.EOF Set strNaam […]
我有一个对话框,当用户单击一个macrosbutton时出现。 这个对话框大部分都是填写的(date,电子邮件,制作人,网站等被填写),所有用户需要做的就是input他们的名字。 问题是input的date是静态的,所以如果我input“3/3/11”,它会保持这种状态直到有人改变它。 我想知道是否有某种方式,该文本框始终显示当前date(除非用户决定改变它,无论什么原因)。 我已经尝试将不同的东西放入文本框的“值”部分(如“getDate()”和“= Date()”),但到目前为止还没有成功。 谢谢, Jesse Smothermon
在VBA中我有这个模糊的舍入问题。 a = 61048.4599674847 b = 154553063.208822 c = a + b debug.print c Result: 154614111.66879 这里是问题,为什么VBA四舍五入variablesc? 我没有发布任何四舍五入的function。 我期待的价值是154614111.6687894847。 即使我四舍五入或格式variablesc小数点后15位,我仍然没有得到我的预期结果。 任何解释将不胜感激。 编辑: 使用cDec获得了预期的结果。 在Jonathan Allen的回复中,我已经读到了CLng为什么会产生不同的结果? 这是testing的结果: a = cDec(61048.4599674847) b = cDec(154553063.208822) c = a + b ?c 154614111.6687894847
为XLS,XLSX和XLSM编写的macros之间是否存在兼容性问题? 同一个macros是否适用于所有的工作簿?
我在Excel中编写一个VBAmacros,分析电子表格中的数据并发送电子邮件。 在这个macros中,我必须附加格式为“MM / dd”的date,但输出格式为“MM-dd”。 所以问题是,为什么我的斜线被破折号取代? 为了简单起见,我已经将代码简化为这个例子,并validation了这个例子中存在的问题。 Private Sub Test() Dim Yesterday As Date: Yesterday = DateAdd("d", -1, Now) MsgBox Format(Yesterday, "MM/dd") End Sub 运行时,消息框显示“12-15”,而不是“12/15”按预期。
我有一个C2的公式,比如=A2+B2 。 每当C2改变值(实际值,而不是公式),我想在D2中更新当前的date和时间。 我已经尝试了很多VBA代码和技巧,如果在C2中input公式,它们都不起作用。 但是,如果我在C2中手动键入一个值,date和时间根据需要更新。 这当然是因为真正的价值被input/变化 – 可以说公式保持不变。 问题:当C2中的公式结果发生变化时,是否可以创build一个更新D2的VBA代码(或其他)? 如果可能的话,我需要这个对于单元格C2:C30(+date+时间的D2:D30) 使用Excel 2010。
在Excel中,我有三列: column1, column2, column3 我正在使用连接到IPAD的条形码扫描器将数据input到Excel中。 条形码扫描器在每次扫描后发送ENTER 。 我相信我可以设置excel,使得ENTER会导致下一列被选中(而不是下一行) 但是,我不知道如何在列3中检测到ENTER之后进行下一行操作。 现在我有这个: Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Column = 3 Then If Target.Value = "{enter}" Then MsgBox "SDf" End If End If End Sub 但Target.Value只检测单元格内的string,它不检测被按下的内容。 如何在column 3检测到ENTER后获得下一行?
现在我使用下面的代码将整个列更改为小写。 我想知道是否有一个更有效的方法来做到这一点 – 我的工作表中有大约150K行。 这需要一些时间来完成,有时我得到一个Out of Memory错误。 第一小组 Sub DeletingFl() Dim ws1 As Worksheet Dim rng1 As Range Application.ScreenUpdating = False Set ws1 = Sheets("Raw Sheet") ws1.AutoFilterMode = False Set rng1 = ws1.Range(ws1.[a1], ws1.Cells(Rows.Count, "A").End(xlUp)) rng1.AutoFilter 1, "Florida" If rng1.SpecialCells(xlCellTypeVisible).Count > 1 Then Set rng1 = rng1.Offset(1, 0).Resize(rng1.Rows.Count – 1) rng1.EntireRow.Delete End If ws1.AutoFilterMode = […]
我正在尝试创build一个excel模板,我已经将不同的macros分配给不同形状的button。 现在我有点find我点击的问题,因为我需要点击该形状后修改点击形状的属性。 在search这个问题时,我注意到有一种方法来识别哪个形状被选中,而我仍然不知道如何获得我点击的形状的名称,或者有没有办法引用那个点击的形状在VBA中 ? 谢谢!