Excel,在运行宏的同时使用Visual Basic

时间:2018-10-31 14:49:59

标签: excel vba excel-vba

我试图在Microsoft Excel中运行宏时使用VBA代码。

我正在用Excel中的“ RecordMacro”运行宏。

在宏过程中,我需要使用一些VBA代码。为此,我单击Visual Basic,然后使用一些VBA代码。

在宏过程中,VBA代码按照指定的方式工作,但是当我单击“停止录制”并尝试运行宏时,它会完全丢失VBA部分。

在启动宏之前,VBA代码已经存储在我的工作簿中,因此我不认为这是复制和粘贴问题。

要自己尝试在记录,宏和记录栏中编写数字列表,然后尝试执行以下代码。

Sub SplitColumn()
    'Updateby20141106
    Dim rng As Range
    Dim InputRng As Range
    Dim OutRng As Range
    Dim xRow As Integer
    Dim xCol As Integer
    Dim xArr As Variant
    xTitleId     = "KutoolsforExcel"
    Set InputRng = Application.Selection
    Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type: = 8)
    xRow         = Application.InputBox("Rows :", xTitleId)
    Set OutRng   = Application.InputBox("Out put to (single cell):", xTitleId, Type: = 8)
    Set InputRng = InputRng.Columns(1)
    xCol         = InputRng.Cells.Count / xRow
    ReDim xArr(1 To xRow, 1 To xCol + 1)
    For i = 0 To InputRng.Cells.Count - 1
        xValue = InputRng.Cells(i + 1)
        iRow = i Mod xRow
        iCol = VBA.Int(i / xRow)
        xArr(iRow + 1, iCol + 1) = xValue
    Next
    OutRng.Resize(UBound(xArr, 1), UBound(xArr, 2)).Value = xArr
End Sub

1 个答案:

答案 0 :(得分:1)

我插入了一个模块,并将上面的代码粘贴到了其中。

然后我输入两个单元格A1 = "1,1"A2 = "1,2"。 接下来,我录制了一个宏,该宏对该系列进行了快速填充至A30。在宏中,我还将字体设置为粗体,然后停止记录。

我打开了记录宏的模块,并添加了行SplitColumn。运行记录的宏导致执行了前几个步骤,然后运行SplitColumn子例程,然后完成了宏。最重要的是,您可以从另一个子程序调用一个子程序或函数。

Sub flashfill()
'
' flashfill Macro
'

'
    Selection.AutoFill Destination:=Range("A1:A30"), Type:=xlFillDefault
    Range("A1:A30").Select
    SplitColumn
    Selection.Font.Bold = True
End Sub

希望有帮助!