Tag: 子例程

许多子程序的variables:代码清理

我一直在思考和寻找解决scheme的几个小时,但不能拿出我的基本问题的答案(显然很难): 所以我有很多子程序: Sub OUTPUT() Call CompañiasCubiertas Call RangosDatos Call EERR Call Balance Call Flujo Call Indicadores Call FormatoEERR Call FormatoBalance Call FormatoFlujo Call FormatoIndicadores End Sub 在这些潜艇的每一个,我有许多variables和工作簿声明重复: Dim y As Workbook Dim x As Workbook Dim rangoi As Integer Dim rangof As Integer Dim compañia As String Dim oipf As Integer Dim ogpf As Integer […]

VBA:if语句的子程序,并返回true或false?

解决了! 我必须validation某些单元格不是空的,所以我想创build一个子例程并传递我需要检查的variables。 这就是我想到的: Sub errorMessage(errMsg As String, errRange As String) If Range(errRange) = "" Then MsgBox errMsg, , "Error:" Range(errRange).Activate 'this is what i was looking for :doh:, the 'end' line terminates everything.. END End Sub 现在当我从我的button调用它,它会实际结束button的子? 即 Private Sub CommandButton1_Click() Call errorMessage("name is missing", "D4") 'this function shouldn't be called if there was a […]

立即运行多个子从一个独特的VBA子

我在VBA模块中有三个不同的子系统可用,并且想要通过一个VBAbutton激活一个独特的子系统来调用这些子系列。 下面的代码运行: Sub Updateworkbook() Call Unprotectworkbook Call CopyAndPaste Call Protectworkbook End Sub 第一个Sub Unprotectworkbook()运行后,另一个Sub不被调用和执行。 为什么会发生? 在Unprotectworkbook()子代码下面供您参考 Sub Unprotectworkbook() Dim myCount Dim i myCount = Application.Sheets.Count Sheets(1).Select For i = 1 To myCount ActiveSheet.Unprotect "password" If i = myCount Then End End If ActiveSheet.Next.Select Next i End Sub

打印数组结果的活动单元格的VBAfunction

我想写一个函数的结果应该打印/写入一个单元格的数组范围。 活动单元格应该是第一个元素,下一个单元格是第二个元素(等等)。 所以,例如,如果我当前的活动单元格是B2,那么所需的结果应该如下图所示。 我的下面的代码只能在Debug.Pring上工作,但是我不知道如何在Excel工作表上实际使用它。 Function ShowResult() Dim strArray() As String Dim result As String result = "Maybe I think too much but something's wrong" strArray = Split(result, " ") Dim StartRow, i As Integer StartRow = 1 For i = 0 To UBound(strArray) Debug.Print strArray(i) 'Range("A" & i + StartRow).Value = strArray(i) <–I tried even […]

如何通过Application来同时运行两个Sub。

我有一个子如下: Function SumOf(Byval a As Integer, Byval b As Integer) Call CalHelper.Sum(a,b) Call CalHelper.Sum(a+1,b+1) SumOf = "OK" End Function CalHelper模块包含: 'BEGIN Declare Private mWindowsTimerID As Long Private mApplicationTimerTime As Date Private numberA As Variant Private numberB As String 'END Decalare 'Register `user32` lib's functions BEGIN Public Declare Function SetTimer Lib "user32" ( _ ByVal HWnd […]

用参数调用自动检测VS分别调用子程序?

我有三个子例程,有时会连续运行,有时会分开运行,但会使用相同的参数(“TestNumber”)。 我的原始代码如下所示: Sub Main1() Dim TestNumber As String TestNumber = InputBox("Please enter TestNumber") ' Some codes running on TestNumber ' Prompt users whether to continue to Main2 Dim Continue As String Continue = MsgBox("Continue to Main2?", vbYesNo) If Continue = vbYes Then Call Main2 Else End If End Sub Sub Main2() ' Similar to Main1, […]

有没有办法将循环代码放入一个函数中,由VBA中的多个子集调用

我在excel中创build的表中有许多不同的类别。 每个子都有自己的数据,它从各种平面文件中提取,但是它们都有相同的结果,根据它在行和列中alignment的类别头将每个值放入特定的单元格。 所以,一开始就是if语句。 有没有办法把这个代码块放在一个单独的子函数或函数中,并且在每个子函数中只有一个调用,这样我就不必经常input/如果我想改变它,我会只需要在一个地方改变它? 这是一个代码示例: 这部分是在每个子的开始,并根据行标题进行更改 Sub calccategory() For k = 1 To ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row If Cells(k, 4) = "row 1" Then 这部分是我想放在一个函数或子函数中的部分,因为每次都是一样的 Dim CWS As Worksheet Workbooks(ThisBook).Activate For j = 5 To 15 For g = 1 To ActiveSheet.Cells(3, Columns.Count).End(xlToLeft).Column If Cells(3, g) = "col1" Then With Range(Cells(k, j * 4 + 2), Cells(k […]

Sub App_WorkbookBeforeSave不适用于VBA加载项/ Excel 2010

我将在保存工作簿之前显示一个MessageBox 。 我已经尝试过事件处理程序Sub App_WorkbookBeforeSave()和Sub Workbook_BeforeSave但两者都不起作用! 为什么? 有我的小插件: Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, _ ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox "Good bye! Data is save." End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox "Good bye! Data is save." End Sub UPDATE 我把它们放在属于Microsoft Excel Objects ThisWorkbook模块中