Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 尝试运行宏时获取错误消息_Vba_Excel - Fatal编程技术网

Vba 尝试运行宏时获取错误消息

Vba 尝试运行宏时获取错误消息,vba,excel,Vba,Excel,我已完成VBA,正在尝试运行它。当我进入并从“代码”窗口按F5时,它会运行,但当我尝试使用实际工作簿中的按钮时,我得到的结果是“无法运行宏。该宏可能在此工作簿中不可用,或者所有宏都可能被禁用。” 您可能必须将工作簿另存为启用宏的工作簿,然后重新打开它。如果提示启用宏,请单击“确定”。如果不知道您的代码,很难知道会发生什么。你能发布你的代码吗?还有,你说的“按钮”是什么意思?您是将按钮添加到工作表中,还是说查看->宏,然后从那里运行?还有,宏在哪里?它是否包含在该工作簿、您的个人工作簿等的模块中?

我已完成VBA,正在尝试运行它。当我进入并从“代码”窗口按F5时,它会运行,但当我尝试使用实际工作簿中的按钮时,我得到的结果是“无法运行宏。该宏可能在此工作簿中不可用,或者所有宏都可能被禁用。”


您可能必须将工作簿另存为启用宏的工作簿,然后重新打开它。如果提示启用宏,请单击“确定”。

如果不知道您的代码,很难知道会发生什么。你能发布你的代码吗?还有,你说的“按钮”是什么意思?您是将按钮添加到工作表中,还是说查看->宏,然后从那里运行?还有,宏在哪里?它是否包含在该工作簿、您的个人工作簿等的模块中?我同意@BruceWayne!除了他的问题,控件是ActiveX还是表单控件?嘿@BruceWayne和MiguelH——所以我有3个实际的按钮,我添加到工作表中,运行3个不同的sub。这些按钮位于工作簿中的工作表上,该工作表也包含宏执行其工作的3个工作表。我将在下面发布一些代码以供参考。谢谢你们将字体更改为Calibri 10带图纸(“Sheet2”).Range(“A3”).CurrentRegion带.Font.Name=“Calibri”。大小=10带图纸结束(“Sheet2”)对于Lrow=1更改为ActiveSheet.UsedRange.Rows.Count With.Cells(Lrow,“M”),如果不是iError(.Value)然后If.Value=“FUTURE”然后.EntireRow.Delete End If End If End With Next Lrow End With将代码添加到原始帖子中(单击“编辑”),然后高亮显示,然后单击
{}
将其格式化为代码。
'Activating Sheet2 in EMM_Template
    Sheets("Sheet2").Activate

'Deleting Column E (Prod RICC)
    Sheets("Sheet2").Columns(5).EntireColumn.Delete

'Deleting Row 3 (Title Row)
    Sheets("Sheet2").Rows(3).EntireRow.Delete

'Selecting Range
    Sheets("Sheet2").Range("A3").CurrentRegion.Select

'Changing Font To Calibri 10
    With Sheets("Sheet2").Range("A3").CurrentRegion
        With .Font
            .Name = "Calibri"
            .Size = 10
        End With
    End With

With Sheets("Sheet2")
    For Lrow = 1 To ActiveSheet.UsedRange.Rows.Count
            With .Cells(Lrow, "M")
                If Not IsError(.Value) Then
                    If .Value = "FUTURE" Then
                        .EntireRow.Delete
                    End If
                End If
            End With
    Next Lrow
End With

'Copying from Sheet2
'Activating/Pasting EMM_ETF
    Sheets("Sheet2").Range("A3").CurrentRegion.Copy
    Sheets("EMM ETF").Activate
    Sheets("EMM ETF").Range("A3").Select
    Sheets("EMM ETF").Rows("3:3").Insert shift:=xlDown

'Format Data
    Sheets("EMM ETF").Range("A3").CurrentRegion.Select
            Range("A3").CurrentRegion.Rows.RowHeight = 12.75
            Range("A3").CurrentRegion.Columns.ColumnWidth = 12

            Rows("1:1").EntireRow.AutoFit
            Rows("2:2").EntireRow.AutoFit

                With Sheets("EMM ETF").Rows("2:2").EntireRow
                    With .Font
                         .Size = 10
                    End With
                End With





'Deleting 0's from Col FGH
        For i = 1 To ActiveSheet.UsedRange.Rows.Count
                If Trim((Cells(i, 13).Value)) = "CURNCY" Then
                        Cells(i, 6).Delete shift:=xlToLeft
                        Cells(i, 6).Delete shift:=xlToLeft
                        Cells(i, 6).Delete shift:=xlToLeft
                End If

        Next i

'Deleting 0's from Col IJK
        For i = 1 To ActiveSheet.UsedRange.Rows.Count
                If Trim((Cells(i, 13).Value)) = "STOCK" Then
                        Cells(i, 9).Delete shift:=xlToLeft
                        Cells(i, 9).Delete shift:=xlToLeft
                        Cells(i, 9).Delete shift:=xlToLeft
                End If
        Next i

'Insert Column to for Action Autofill
    Sheets("EMM ETF").Range(Range("J3:L3"), Range("J3:L3").End(xlDown)).Select
    Sheets("EMM ETF").Range(Range("J3:L3"), Range("J3:L3").End(xlDown)).Cut
    Sheets("EMM ETF").Range("K3").Select
    ActiveSheet.Paste


 'Match Action Rights to Last Comment
 Dim Rng As Range, x As Range

        With ActiveSheet

            Set Rng = .Range("I3:I" & .Range("I" & Rows.Count).End(xlUp).Row)
                    For Each x In Rng

                    If InStr(1, x.Text, "No Action", 1) > 0 Then
                    x.Offset(0, 1).Value = "No Action"

                    End If

                    Next x





            Set Rng = .Range("I3:I" & .Range("I" & Rows.Count).End(xlUp).Row)
                    For Each x In Rng

                    If InStr(1, x.Text, "Rights", 1) > 0 Then
                    x.Offset(0, 1).Value = "Rights"

                    End If

                    Next




                Set Rng = .Range("I3:I" & .Range("I" & Rows.Count).End(xlUp).Row)
                For Each x In Rng

                    If InStr(1, x.Text, "Warrant", 1) > 0 Then
                    x.Offset(0, 1).Value = "Warrant"

                    End If



                     Next x



                Set Rng = .Range("I3:I" & .Range("I" & Rows.Count).End(xlUp).Row)
                For Each x In Rng

                    If InStr(1, x.Text, "Pinksheet", 1) > 0 Then
                    x.Offset(0, 1).Value = "Pinksheet"

                    End If



                    Next x



                Set Rng = .Range("I3:I" & .Range("I" & Rows.Count).End(xlUp).Row)
                For Each x In Rng

                    If InStr(1, x.Text, "Desk", 1) > 0 Then
                    x.Offset(0, 1).Value = "Desk to adjust"

                    End If



                    Next x



                Set Rng = .Range("I3:I" & .Range("I" & Rows.Count).End(xlUp).Row)
                For Each x In Rng

                    If InStr(1, x.Text, "Asset", 1) > 0 Then
                    x.Offset(0, 1).Value = "Asset Servicing"

                End If

                Next x



                Set Rng = .Range("I3:I" & .Range("I" & Rows.Count).End(xlUp).Row)
                For Each x In Rng

                    If InStr(1, x.Text, "Journal", 1) > 0 Then
                    x.Offset(0, 1).Value = "MO Journal"

                End If

                Next x

        End With


'Detect/Cut/Insert/CCY
        Dim CorrectPosition As Integer

        CorrectPosition = getCorrectPosition("Ccy")
        Call MoveRows("K", "CURNCY", CorrectPosition)

        'Detect/Cut/Insert/Foreign
        CorrectPosition = getCorrectPosition("Foreign")
        Call MoveRows("A", "FRGN3", CorrectPosition)

'Changing Font To Calibri 10
    With Sheets("EMM ETF").Range("A3").CurrentRegion
        With .Font
            .Name = "Calibri"
            .Size = 10
        End With
    End With

'Final Sort


End Sub

Function getCorrectPosition(StringToLookFor As String) As Integer
Dim i As Integer
For i = 3 To ActiveSheet.UsedRange.Rows.Count
    If (Cells(i, 1) = StringToLookFor) Then
        Exit For
    End If
Next

getCorrectPosition = i + 2
End Function

Sub MoveRows(columnName As String, LookupValue As String, positionToPaste As Integer)
        With Sheets("EMM ETF")
            For Lrow = 2 To ActiveSheet.UsedRange.Rows.Count
                    With .Cells(Lrow, columnName)
                        If Not IsError(.Value) Then
                            If .Value = LookupValue Then
                                .EntireRow.Cut
                                Cells(positionToPaste, 1).Select
                                Selection.Insert shift:=xlDown
                                Lrow = 1
                            ElseIf .Value = "" Then
                                Exit For

                            End If

                        End If
                    End With
            Next Lrow
        End With


End Sub