Tag: vba

如何用VBA重新定义命名范围?

我有一个名为“X”的范围是1000行,我想dynamic地减less到100。 我尝试了Range("X").Resize(100,1)和.Resize(-900,0)但似乎都没有改变命名范围的大小,当我通过select从范围下拉列表中select范围,下拉菜单。 我究竟做错了什么?

我怎样才能得到一个单元格的列的字母(需要使它过去的Z列,如AA,AB)

可能重复: VBA函数将列号转换为字母? 我想要列字母通过Z列,有许多技术获得它之前Z列,但在Z之后,似乎没有任何工作有没有办法做到这一点?

将数字字符转换为字母字符

我试图得到I / O如下: input:123490 输出:BCDEJA 逻辑很简单: 如果 strarr(i)=0,1,2,3,4,5,6,7,8,9 然后 strarr(i) should be = A,B,C,D,E,F,G,H,I,J 码 str = .Cells(18, "B").Value strarr() = Split(str) For i = LBound(strarr) To UBound(strarr) If strarr(i) = 0 Then .Cells(24, "B") = "A" & .Cells(24, "B") Else If strarr(i) = 1 Then .Cells(24, "C") = "B" & .Cells(24, "C") Else If […]

来自VBA的ADODB连接停止工作

我们有一个用于pipe理工作时间以外的支持工程师的Rota电子表格。 前一段时间,我添加了一些VBA代码,可以自动将支持电话号码转移到工程师的电话号码。 它通过连接到由电话提供商运行的数据库并更新转接号码来完成。 今天下午,突然没有在中央服务器上工作: Dim Db As ADODB.Connection Sub ConnectDatabase() Set Db = New ADODB.Connection Db.Open "SupportMobileDb" End Sub 代码停在New ADODB.Connection行,并报告: Run-time error '430': Class does not support Automation or does not support expected interface 我仍然可以运行我的笔记本电脑上的macros,它可以正常工作。 而在中央服务器上,我仍然可以使用Excel,并正确连接到数据源。 在这台服务器上不再需要使用VBA。 macros上午9时正确运行,并将所有电话转移到办公室,但下午5点转移到工作人员macros没有工作。 我看不到Windows今天已经更新,或者真的有任何其他更改。 有没有人见过这个问题?

使用vba在模块中编程创build表单

我想以编程方式使用VBA在模块中创build一个用户窗体。 我是一个新手,没有经验,所以我尝试了几个例子,但是他们没有达到我的要求。 我只是想macros 使用VBA在模块内创build用户表单 有一个ListBox与一些数据 有一个监听器的CommandButton 这是我使用的代码 Option Explicit Sub MakeuserForm() 'Dim CommandButton1 As MsForms.CommandBarButton 'Dim ListBox1 As MsForms.ListBox Dim UserForm1 As VBComponent Set UserForm1 = ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm) With UserForm1 .Properties("Height") = 100 .Properties("Width") = 200 On Error Resume Next .Name = "My Form" .Properties("Caption") = "This is your user form" End With ShowForm End Sub […]

如何减less一个巨大的Excel文件

我只有一个简单的* .XLS文件,只有一张纸,在这张纸上只有很多小号文字的单元格。 (文件大小24Kb) 但是我做了很多的修改,复制和粘贴,扩展公式,保存…之后,我删除了大部分这些变化,并使用这些数据创build了4个副本。 现在我的新文件是非常巨大的 :2.5Mb! 隐藏的数据在哪里,如何删除? 我在每张纸上有300张纸和1张照片的实际文件上有同样的问题: 文件大小为280Mb

Excel隐藏/显示function区上除自定义选项卡外的所有选项卡

如何使用VBA(而非XML)隐藏和显示所有标准Excelfunction区选项卡。 我不想隐藏整个function区(就像这里问的: VBA在Excel中最小化function区 )只是选项卡。 我知道如何使用XML的startFromScratch,所以请不要暗示或其他的XML解决scheme。 到目前为止,我已经做了广泛的谷歌search,并看着: http://msdn.microsoft.com/en-us/library/office/ee390805(v=office.11​​).aspx http://msdn.microsoft.com/en-us/library/microsoft.office.tools.ribbon.officeribbon.startfromscratch.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1 在Excel中使用VBA自定义function区 使用Excel VBA在XLS文件中显示Excel 2007function区 使用Excel VBA在XLS文件中显示Excel 2007function区 function区GUI指南 Excel CustomUIfunction区布局 http://www.rondebruin.nl/win/s2/win012.htm 我所说的是我已经做了大量的search,并且尝试了很多东西而没有得到结果。

如何使用Excel VBA获取新插入logging的ID?

似乎这是一个普遍的问题,但大多数解决scheme是指连接多个SQL命令,我相信不能用ADO / VBA来完成(但我很高兴在这方面显示错误)。 我目前插入我的新logging,然后运行一个select查询使用(我希望)足够的字段,以保证只有新插入的logging可以返回。 我的数据库很less被多个人同时访问(查询之间发生另一次插入的风险可以忽略不计),并且由于表的结构,识别新logging通常相当容易。 我现在试图更新一个没有太多的唯一性范围的表,而不是人为的主键。 这意味着新的logging可能并不是独一无二的,我不愿意添加一个字段来强制唯一性。 在这种情况下,将logging插入到Access表中然后从Excel中查询新的主键的最佳方法是什么? 感谢您的答复。 我试图让@@IDENTITY工作,但是这总是返回0使用下面的代码。 Private Sub getIdentityTest() Dim myRecordset As New ADODB.Recordset Dim SQL As String, SQL2 As String SQL = "INSERT INTO tblTasks (discipline,task,owner,unit,minutes) VALUES (""testDisc3-3"",""testTask"",""testOwner"",""testUnit"",1);" SQL2 = "SELECT @@identity AS NewID FROM tblTasks;" If databaseConnection Is Nothing Then createDBConnection End If With databaseConnection .Open dbConnectionString .Execute (SQL) […]

根据Outlook邮件更新Excel表格

我的目标是更新Excel表,每当我收到一个特定主题的邮件(我build立了一个规则,将相关的邮件移动到一个文件夹)。 我在这个网站看到了类似的post,但是给出的代码并不完整。 不是“专家”或“技术人员”,很难编码。 邮件包含: 文件名:所有者名称:上次更新date:文件位置(这将是共享驱动器path): 我会每天收到这封邮件,需要在Excel表格中更新这些信息。 (我将继续开放到月底) 请帮帮我。 提前致谢

如果单元格不包含“@”,则删除整行的有效方法

我正在创build一个快速的子邮件进行有效性检查。 我想删除“E”列中不包含“@”的整行联系人数据。 我使用了下面的macros,但是它的运行速度太慢,因为Excel在删除之后移动了所有的行。 我试过另一种技术: set rng = union(rng,c.EntireRow) ,然后删除整个范围,但是我不能防止错误信息。 我也尝试过将每行添加到select中,并且在select了所有内容之后(如在Ctrl + Select中),随后将其删除,但找不到适当的语法。 有任何想法吗? Sub Deleteit() Application.ScreenUpdating = False Dim pos As Integer Dim c As Range For Each c In Range("E:E") pos = InStr(c.Value, "@") If pos = 0 Then c.EntireRow.Delete End If Next Application.ScreenUpdating = True End Sub