0
我已經完成了我的VBA並嘗試運行它。當我從代碼窗口進入並按F5時,它會運行,但是當我嘗試使用實際工作簿中的按鈕時,我得到「無法運行宏。宏可能在此工作簿中不可用或者所有宏可能禁用「。試圖運行宏時收到錯誤消息
'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
很難知道在不知道代碼的情況下會發生什麼。你能發佈你的代碼嗎?另外,你是什麼意思的「按鈕」?您是否將按鈕添加到工作表中,還是您的意思是查看 - >宏,然後從那裏運行?另外,哪裏是*宏?它是否在該工作簿,個人工作簿等的模塊中? – BruceWayne
我同意@BruceWayne!關於他的問題,控件是ActiveX還是Form控件? – MiguelH
嘿@BruceWayne和MiguelH - 所以我有3個實際的按鈕,我添加到表中運行3個不同的子我猜。這些按鈕位於工作簿的工作表中,該工作簿中還包含宏在其中工作的3張工作表。我將在這裏發佈一些代碼以供參考。多謝你們! – abiedermann