Vba 尝试运行宏时获取错误消息
我已完成VBA,正在尝试运行它。当我进入并从“代码”窗口按F5时,它会运行,但当我尝试使用实际工作簿中的按钮时,我得到的结果是“无法运行宏。该宏可能在此工作簿中不可用,或者所有宏都可能被禁用。”Vba 尝试运行宏时获取错误消息,vba,excel,Vba,Excel,我已完成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