我在Excel 2003中有一个VBA项目。 这个VBA项目是用俄文编写的,所以所有的评论和消息在我的英文操作系统(WindowsXP)上是不可读的。 所以俄罗斯机器上的代码看起来像(OK): Sub Select_I() 'Выделяет по текущей ячейке "построчный" диапазон для ввода данных по объекту 成为我的(不好) Sub Select_I() 'Âûäåëÿåò ïî òåêóùåé ÿ÷åéêå "ïîñòðî÷íûé" äèàïàçîí äëÿ ââîäà äàííûõ ïî îáúåêòó 有没有办法“向”VBA编辑器“指出”使用什么编码?
.net自动化库中是否有一些事件可以检测到正在使用excel文件的用户运行macros? 例如,用户打开一个包含macros的excel文档,比他运行macros和.net应用程序,附加到该excel进程检测到macros的开始事件? 或者可能将macrosfunction绑定到应用程序中的委托事件。 编辑: 可以从后面的代码中捕获“运行macros”CommandBarControl点击事件?
我相信我想要做的很简单。 我想遍历一个Range参数,并更改该范围内的每个单元格的值。 Function test(thisRange As Range) For Each c In thisRange.Cells c.Value = 1 Next End Function 以上是我想要做的一个简单的例子,但似乎没有工作。 当我debugging这个时,Excel似乎抛出一个错误,当它打c.Value = 1 。 为什么这不起作用?
编辑:几个月后,我再次尝试使用我第一次尝试相同的语法(下面张贴)。 出于某种原因,它的工作! 也许除了我的语法之外的东西导致无效… END EDIT 我一直在寻找论坛几个小时,现在试图find解决这个问题,但我没有尝试的东西工作。 我正在使用VBA来自动化在SurveyMonkey上创build调查的过程。 到目前为止,我已经能够: login到我的帐户, 点击几个超链接来创build一个新的响应收集器, 命名收集器, 转到collections夹设置, 然后,select四个单选button中的三个来更改收集器设置。 问题不在于我无法select单选button; 我的代码select前三个button就好了。 令我感到困惑的是第四个button不会改变! 我对每个button使用相同的过程,所以我不知道为什么最后一个button不会select。 这是我的代码部分: objIE.Document.getElementById("rdlResponseType_1").Click 'Allow multiple responses = Yes objIE.Document.getElementById("rdlResponseEdit_1").Click 'Allow Responses to be Edited = Yes objIE.Document.getElementById("rdlThankyou_1").Click 'Display a "Thank You" page? = Yes objIE.Document.getElementById("rdlCompleteOpt_1").Click 'Survey Completion = Close Window 这是单选button的HTML: <table border="0" cellpadding="0" cellspacing="0" style="width: 100%;"> <tr id="CompleteOptDesc"> […]
我有如下所示的txt文件 我使用这里显示的方法在Excel中导入txt文件。 列帐户被转换为文本。 数据导入后,文件如下所示。 我有一个需要将文件保存为csv然后由不同的系统导入。 问题是重新打开csv文件如下所示。 帐户列中的前导零消失。 我不能添加'帐户列单元格bcoz系统不接受。 可以做些什么来保持在CSV打开/重新打开前导零? 我这样做全部使用VBA Sub createcsv() Dim fileName As String Dim lastrow As Long Dim wkb As Workbook lastrow = Range("C" & Rows.Count).End(xlUp).Row 'If lastrow < 6 Then lastrow = 6 For i = lastrow To 3 Step -1 If Cells(i, 4).Text = vbNullString Then Cells(i, 1).EntireRow.Delete ElseIf Trim(Cells(i, […]
我写了一些生成散点图的Excel VBA代码,并更改了图表的一些属性。 (代码如下,以供参考。)代码缓慢移动,如删除图表图例,删除水平/垂直网格线,以及更改X和Y系列。 Excel的计时器为每个任务提供了以下持续时间: insert scatterplot: 0.01171875 delete series: 0 plot x vs y: 0.55859375 delete legend: 0.5703125 delete chart title: 0.66015625 remove grid: 1.3046875 format axes: 0 overall: 3.11328125 删除网格,改变标题,绘制X和Y系列,删除图例似乎需要很长时间。 我已经search了替代方法来编写代码,但一直没有find有用的东西。 代码完全按预期工作,除了速度慢以外。 任何想法是什么导致了糟糕的performance,以及如何加快这一点? 提前致谢。 编辑:我已经closures屏幕更新,同时使用图表。 图表是在用户表单打开的情况下生成/格式化的,如果这有什么区别的话。 以下是相关的代码片段: With ActiveChart 'Delete all series currently in plot Do While .FullSeriesCollection.Count > 0 .FullSeriesCollection(1).Delete Loop 'Plot Actual […]
我有许多大型Microsoft Word文档,其中包含许多Microsoft Excel电子表格中的许多链接文件。 打开Word文档时,即使选中了“打开更新链接文件”选项: Word通过打开和closures每个单独链接的相关Excel电子表格来检查每个链接的来源(即使从同一电子表格中,Word将打开并closures电子表格x次)。 这意味着打开文档需要很长时间 。 我发现如果包含链接对象源的电子表格已经打开,文档打开速度更快,所以Word不会打开,closures,重新打开它们。 到目前为止,我有一个解决scheme的开始是创build链接对象的所有文件path的列表,由以下VBA代码完成: Sub TypeArray() Dim List(), Path As String Dim i, x As Integer Dim s As InlineShape Dim fso As FileSystemObject, ts As TextStream Set fso = New FileSystemObject Set ts = fso.OpenTextFile("C:\MyFolder\List.txt", 8, True) With ts .WriteLine (ActiveDocument.InlineShapes.Count) End With For Each s In ActiveDocument.InlineShapes Path […]
我正尝试从Excel-VBA中调用C ++ DLL。 我知道DLL函数正在执行,因为我插入了fputs()日志logging调用来跟踪执行和邮票显示在我的日志文件。 问题是,每当DLL函数返回,我得到错误49。 这是VBA中的声明: Private Declare Function InitMCR Lib "MCRBoilerplate.dll" Alias "?initMCR@@YGXXZ" () 这里是C ++中的声明 __declspec(dllexport) void __stdcall initMCR() { … } 为什么我得到这个错误49行为,即使DLL调用似乎工作?
我努力了解如何使用VBA中的类模块创build自定义事件。 我已经把简单的下面的例子。 你在A1和B1中放入一个值,然后重新激活表格来计算两者的总和,然后我希望一个事件会触发来警告计算,但没有任何反应。 我非常感谢任何帮助解决这个例子。 类模块cCalc: Dim m_wks As Worksheet Public Event BeforeCalc() Property Set Worksheet(wks As Worksheet) Set m_wks = wks End Property Public Sub Calc() Dim dVal1 As Double Dim dVal2 As Double With m_wks dVal1 = .Range("A1").Value dVal2 = .Range("B1").Value RaiseEvent BeforeCalc .Range("C1").Value = dVal1 + dVal2 End With End Sub 在mGlobal模块中: Public […]
我有一个代码,允许我根据匹配的ID复制和粘贴数千行信息。 但是,代码在数据透视表中似乎不能很好地运行。 在工作表4中,将ID放入数据透视表中,而在工作表1中,ID和信息不在数据透视表中(工作表4和1中的两个ID在列A中的同一列中)。 但是,ID在工作表1中出现了不止一次。因此,当我尝试运行代码,它给了一个错误,说Cannot enter a null value as an item or field name in pivot table report" on the line 'rngTracker.Value = arrT在下面find。 Sub Sample() Dim rngTracker As Range Dim rngMaster As Range Dim arrT, arrM Dim dict As Object, r As Long, tmp With Workbooks("FAST_Aug2015_Segment_Out_V1.xlsm") Set rngTracker = .Sheets("Sheet4").Range("A5:D43000") Set rngMaster = .Sheets("Sheet1").Range("A2:C200000") […]