我正在使用以下方法创build数据validation列表: sDataValidationList = sDataValidationList & wksCalculation.Cells(r, lActivityNoColumn).value & "," 然后我将它应用到一个单元格使用: .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=s 这在大多数情况下都能正常工作,但是当任何wksCalculation.Cells(r, lActivityNoColumn).value包含逗号时,那些string将被数据validation列表分割,并且每个逗号分隔的string部分都显示为一个单独的项目。 我怎样才能修改我的代码也有用,当进入数据validation列表中的一些值在它们中有逗号?
我在Excel 2010中运行了大量的计算,因此数据types是非常重要的,以保持macros执行时间尽可能低。 我的优化思路是让用户select所有数据将被声明的数据types(同时指出每种数据types的优缺点,精度/灵活性和CPU密集度/macros执行时间之间的平衡)。 但是,当我运行macros,我收到以下错误信息: 编译错误: 声明无效外部types块 这里是代码的违规部分: Ind2 As Double, BgrValP As Double, BgrRow As Double, M40eff As Double 这是macros的相关部分: ' Develop fake data to at glance recognize whether program works. ' Source http://www.cpearson.com/excel/optimize.htm Option Explicit Private Sub Function1() On Error GoTo ErrorHandler Dim userChoice As Variant Dim strPath As String, strFileN As String, strDirN […]
我有一个多用户窗体的Excel文件。 要打开用户窗体我有代码如 Sub runAdjuster() Adjuster.Show End Sub 大约有5个 根据代码的保存位置,什么被认为是最佳实践? 我原本是在一个模块中,但已决定将其移动到ThisWorkbook对象。 寻找关于通常做什么来保持代码清洁的提示。
我正在使用VBA创build一个Excel文件的副本。 在文件中,有一列包含前面的零的数字。 该文件的副本被创build,但是该列中的数据被删除。 我需要保持与前面的零值。 我怎样才能解决这个问题与VBA?
我试图把Excel 2003连接到SQL Server 2000来运行一些dynamic生成的SQL查询,最终填充某些单元格。 我试图通过VBA通过ADO(我试过2.8到2.0),但我在设置ADODB.Connection对象内的ActiveConnectionvariables时出现错误。 我需要解决这个很快… 请求的操作需要一个OLE DB会话对象,目前的提供者不支持。 我真的不知道这个错误意味着什么,现在我不在乎。 如何才能使这个连接成功,以便我可以运行我的查询? 这是我的VB代码: Dim SQL As String, RetValue As String SQL = " select top 1 DateTimeValue from SrcTable where x='value' " 'Not the real SQL RetValue = "" Dim RS As ADODB.Recordset Dim Con As New ADODB.Connection Dim Cmd As New ADODB.Command Con.ConnectionString = "Provider=sqloledb;DRIVER=SQL Server;Data […]
我有一个macros,通过一个目录,并查看其所有文件。 不幸的是,目录在映射的networking驱动器上,所以这个过程非常慢。 我怎样才能杀死macros?
我想知道如何创build从一个Excel工作表到另一个超链接,自动通过脚本,基于相同的文本值,这两个单元格在其各自的工作表中有。 如果这可以做到没有脚本,使用某种公式(如VLOOKUP),这将是可取的。 谢谢你的时间。
我在使用VBA执行SQL查询时遇到问题,并将结果复制到Excel工作表中。 当子执行时,它只复制256的倍数的行(所以行256,512,768等是唯一填充到Excel中的行)。 我没有问题从数据库中复制任何其他领域。 另外,当我在MySQL中运行相同的查询,它工作正常。 对于SQL和VBA都是相当新的,我不明白为什么这个特定的领域会造成麻烦。 我唯一能想到的是它的内容是一个总是以下划线开始的string(我只提到,因为它是它和其他字段之间的唯一区别)。 有人有任何想法,为什么这可能会发生? 干杯, 利亚姆 编辑:这是有问题的代码片段。 说实话,我不确定是否看到代码会有所作为,看到它适用于其他情况,但是再次,这就是为什么我是新手:) Dim con As ADODB.Connection Dim rst As ADODB.Recordset Set con = New ADODB.Connection Set rst = New ADODB.Recordset con.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=ipaddress;UID=userID;PWD=password;DATABASE=jiradb;OPTION=16427;" con.Open sql = "SELECT TEMPO_DATA FROM gssd_worklog WHERE WORK_DATE BETWEEN '2012-01-01' AND '2012-03-31'" 'Open Recordset' rst.Open sql, con 'Copy Data […]
我希望有人可以帮助这段代码。 如果我在列A中find文本“FemImplant”,我试图删除整行。棘手的部分是,这个文本是由'$'链接的句子的一部分。 所以我需要代码来parsing出“$”之前的单元格内容,看它是否匹配“FemImplant”并删除该行。 这是我迄今为止,但它没有工作。 Dim cell As Excel.Range RowCount = DataSheet.UsedRange.Rows.Count Set col = DataSheet.Range("A1:A" & RowCount) Dim SheetName As String Dim ParsedCell() As String For Each cell In col ParsedCell = cell.Value.Split("$") SheetName = ParsedCell(0) If SheetName = "FemImplant" Then cell.EntireRow.Delete Shift:=xlUp End If 下一个
工作表A具有从工作表B收集的数据范围。 工作表A有一个macros,用于计算数据是否高于某个值,然后调用电子邮件模块向选定的用户发送电子邮件。 当工作表A上手动input数据时,macros工作,但是当从工作表B中提取数据时,它不会触发。 我不知道我需要改变我的VBA代码。 Private Sub Worksheet_Change(ByVal Target As Range) Call MailAlert(Target, "B5:M5", 4) Call MailAlert(Target, "B8:M8", 7) Call MailAlert(Target, "B11:M11", 6) Call MailAlert(Target, "B14:M14", 2) Call MailAlert(Target, "B17:M17", 4) Call MailAlert(Target, "B20:M20", 1) Call MailAlert(Target, "B23:M23", 3) Call MailAlert(Target, "B26:M26", 1) Call MailAlert(Target, "B29:M29", 5) Call MailAlert(Target, "B32:M32", 1) Call MailAlert(Target, "B35:M35", 7) Call […]