我正在使用一个函数,我在这里看到了Stackoverflow: Function EXTRACTELEMENT(Txt, n, Separator) As String EXTRACTELEMENT = Split(Application.Trim(Txt), Separator)(n – 1) End Function 它正在分解一组数据,如下所示: sRN LMDscandata sRA LMDscandata 1 1 F97BBF 0 0 6D2A 6D2D 71F5A0FA 71F5FD85 0 0 7 0 0 1388 168 0 1 DIST1 3F800000 00000000 D9490 1388 5 6E2 6DC 6E3 6ED 6E1 0 0 0 0 0 0 […]
我有一个工作簿,可以将工作表导出到.csv,但它复制到一个新的工作簿一秒钟之前保存即时通讯想知道是否有一种方法只是复制工作表中的数据,而不需要打开一个新的工作簿? 我有的代码是: Sub CopyToCSV() Dim FlSv As Variant Dim MyFile As String Dim sh As Worksheet Dim MyFileName As String Dim DateString As String Application.ScreenUpdating = False DateString = Format(Now(), "dd-mm-yyyy_hh-mm-ss-AM/PM") '<~~ uses current time from computer clock down to the second MyFileName = "Results – " & DateString Set sh = Sheets("Sheet1") sh.Copy FlSv […]
我已经触及了一些奇怪的数组,我可以为整个数组赋值而不是单个数组成员。 这是一个名为Class_E的数据类模块 Public Name As Variant Public Age As Variant 这是body代码,它只是分配和重新赋值给2个数组 Sub main() Dim r As Class_E Set r = Band() End Sub Function Band() As Class_E Set Band = New Class_E 'Part 1: Initialize the variables Debug.Print "Part 1" Band.Name = Array("Edison", "Tesla", "Faraday", "Turing") Debug.Print "Before: Name={" & Band.Name(0) & ", " & […]
我在Excel中的这个部分的代码在VBA的过去价值从cliboard: Dim WS as Worksheet Set WS = Sheets.Add SheetName= "New One" Sheets("New One").Range("A11").PasteSpecial xlValues 我有这个问题: error '9' Subscript out of range 。如果我改变工作表名称像sheet19技术名称,工作好,但我不知道正在创build的工作表的技术名称。 我可以解决这个问题? 提前
所以我试图删除C列中有重复的行。这是一个大约700条logging的列,但是这个值随使用的不同数据而变化,因此我实现了一个“LastRow”函数。 这是我的代码: Public Function LastRowInCRC() As Long Dim wsCRC As Worksheet Set wsCRC = Worksheets("CRC") With wsCRC LastRowInCRC = .Cells(.Rows.Count, "C").End(xlUp).Row End With End Function Sub DeleteDupRowsCRC() Dim wsCRC As Worksheet Set wsCRC = Worksheets("CRC") Dim lrowcrc As Long lrowcrc = CRC.LastRowInCRC 'Debug.Print "C8:C" & lrowcrc With wsCRC .Range("C8:C" & lrowcrc).RemoveDuplicates Columns:=Array(3) End With End […]
我已经在这个站点(和别处)多次阅读过,如果可能的话,最好避免在VBAmacros中复制/粘贴。 例如,而不是这样做… For i = 1 To tbl.ListColumns.Count With tbl.ListColumns(i).DataBodyRange .FormulaR1C1 = "=2*1" .Copy .PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End With Next …这应该是更好/更快的做到这一点: For i = 1 To tbl.ListColumns.Count With tbl.ListColumns(i) .DataBodyRange.FormulaR1C1 = "=2*1" .DataBodyRange = .DataBodyRange.Value End With Next 但是在一张大桌子(15列,10万行)上testing,复制/粘贴版本明显更快(1.9秒vs 2.7秒)。 即使我首先声明tbl.DataBodyRange为Rangevariables,差异依然存在。 我认为这可能是ListObjects的一些奇怪的属性,但是没有它们的区别实际上更大: 'Runs in 1.1 seconds With Sheet1.Range("A1:O100000") .FormulaR1C1 = "=2*1" .Copy .PasteSpecial […]
我必须在Excel中使用VBA制作柱形图(无用户input)。 我想格式化X轴的标签,以便每个标签的alignment度变成-270度。 (这可以通过更改“格式轴”对话框的“alignment”选项卡中的“自定义angular度”属性手动完成。)我已经尝试录制一个macros,但Excel似乎没有loggingalignment步骤。 有人知道如何用VBA做到这一点吗?
我用C ++创build了一个ActiveX控件。 我使用Visual Basic代码来实例化Excel工作表中的控件。 我只能运行一次VB脚本,当尝试访问“ActiveSheet”variables时,后续运行会导致以下运行时错误: Microsoft Visual Basic Run-time error '-2147319765 (8002802b)': Automation error Element not found 我正在努力解决是什么原因导致这个错误,我该如何解决它? 作为一个实验,我尝试创build一个由Visual Studio向导生成的简单ActiveX控件(在VS 2005&2008中)。 我没有在这个testing用例中添加或修改任何代码。 简单的testing用例仍然会导致这个错误。 系统中的其他ActiveX控件不会导致此错误(例如,我尝试从VB代码中实例化“位图图像”)。 这是VB代码(我logging的一个macros,但手动编码的VB有相同的问题): Sub Macro1() ActiveSheet.OLEObjects.Add(ClassType:="test.test_control.1" _ , Link:=False, DisplayAsIcon:=False).Select End Sub 任何人都可以给我一个答案吗? 或者任何指向可能有帮助的资源指针将不胜感激。 谢谢
Excel问题:用户单击button,VBAparsinginput文件,将数据放入电子表格的单元格中。 然后,她将电子表格的副本邮寄给使用数据的人员。 我将用SSRS或ASP或Sharepointreplace此显示来自SQL Server的数据。 为了在不中断当前进程的情况下处理这个问题,我想要Excel VBA,每次向电子表格写入一行时,还要通过存储的proc将其插入到SQL Server数据库中。 我可以让它将CSV中的行写入一个文件,以便稍后SSIS导入,但是我宁愿直接转到数据库。 我知道如何在VB.Net中做到这一点,但我从来没有在VBA中写入数据(通常是将数据读入logging集,但没有写入)。 我宁愿将值作为params传递给存储过程,但是如果必须的话,我可以为每一行生成较慢的INSERT命令。
我想插入一个范围对象到公式中。 一个例子应该看起来像这样: Dim x As Range Set x = Range(Cells(1, 1), Cells(2, 1)) Range("C1").Formula = "=SUM(" & x & ")" 在单元格C1中的结果应该是“= SUM(A1:A2)”。 重点是将范围对象插入到公式中。 我以SUM为例,真正的公式比较复杂。 我想有一个简单的答案,例如一个范围对象的一些方法,但我没有find它后,一些思考… 在此先感谢,Dainis