Erstellen eines Makros in Excel, das auf der Stufe pausiert, an der der VBA-Code ausgeführt wird

461
Zarina Akhtar

Ich erstelle ein Makro in Excel.

Ich komme zu einem bestimmten Zeitpunkt in der Automatisierung, wenn ich etwas VBA-Code ausführen muss.

Während des Automatisierungsprozesses klicke ich auf Entwickler und gebe die Dinge ein, die ich eingeben muss.

Wenn ich jedoch die Aufnahme stoppe und versuche, das Makro von Grund auf zu starten, wird es an der Stelle angehalten, an der der Entwicklerreiter geöffnet wird, und der Vorgang wird nicht beendet.

Sub-CreatePortfolio () '

' CreatePortfolio Macro '  ' Range("A2:H132").Select ActiveWindow.SmallScroll Down:=-144 Range("D1").Select ActiveWindow.SmallScroll Down:=-6 ActiveCell.FormulaR1C1 = "Blank" Range("H1").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = 11 .ColorIndex = 11 .TintAndShade = 0 .PatternTintAndShade = 0 End With With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With ActiveCell.FormulaR1C1 = "Name" Cells.Select ActiveWorkbook.Worksheets("INPUT_DATA").Sort.SortFields.Clear ActiveWorkbook.Worksheets("INPUT_DATA").Sort.SortFields.Add2 Key:=Range( _ "B1:B132"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal ActiveWorkbook.Worksheets("INPUT_DATA").Sort.SortFields.Add2 Key:=Range( _ "C1:C132"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("INPUT_DATA").Sort .SetRange Range("A1:H132") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("H14").Select ActiveWindow.SmallScroll Down:=-15 Rows("1:1").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ActiveWindow.SmallScroll Down:=126 Range("A133:H133").Select Selection.Copy ActiveWindow.SmallScroll Down:=-168 Range("A1").Select ActiveSheet.Paste Range("I2").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=COUNTIF(R2C8:R20000C8,RC[-8])" Range("I2").Select Selection.AutoFill Destination:=Range("I2:I133") Range("I2:I133").Select Range("J2").Select ActiveCell.FormulaR1C1 = "=IF(RC[-1]>0,1,0)" Range("J2").Select Selection.AutoFill Destination:=Range("J2:J133") Range("J2:J133").Select Range("I1").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = 11 .ColorIndex = 11 .TintAndShade = 0 .PatternTintAndShade = 0 End With With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With ActiveCell.FormulaR1C1 = "IF1" Range("J1").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = 11 .ColorIndex = 11 .TintAndShade = 0 .PatternTintAndShade = 0 End With With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With ActiveCell.FormulaR1C1 = "IF2" Rows("1:1").Select Selection.AutoFilter ActiveSheet.Range("$A$1:$J$133").AutoFilter Field:=10, Criteria1:="0" Range("A1:J133").Select Selection.Copy Sheets("SORT1").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Columns("A:A").EntireColumn.AutoFit Range("K5").Select Columns("G:G").EntireColumn.AutoFit Columns("A:A").Select Application.CutCopyMode = False Selection.Copy Columns("L:L").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Range("$L$1:$L$44").RemoveDuplicates Columns:=1, Header:=xlNo Columns("L:L").EntireColumn.AutoFit Range("M1").Select ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""",0,1)" Range("M1").Select Selection.AutoFill Destination:=Range("M1:M4") Range("M1:M4").Select Range("M21").Select ActiveCell.FormulaR1C1 = "=SUM(R[-20]C:R[-1]C)-1" Range("L21").Select ActiveCell.FormulaR1C1 = "Magic Number" 

Hier ist, wenn ich versuche, auf Entwickler zu klicken und den VBA-Code auszuführen

 Range("N21").Select ActiveWindow.SmallScroll Down:=-24 Range("O2").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=RC[-3]" Range("O2").Select Selection.AutoFill Destination:=Range("O2:O20"), Type:=xlFillDefault Range("O2:O20").Select ActiveWindow.SmallScroll Down:=-15 Selection.ClearContents Range("O2").Select ActiveCell.FormulaR1C1 = "=IF(RC[-3]="""","""",RC[-3])" Range("O2").Select Selection.AutoFill Destination:=Range("O2:O20"), Type:=xlFillDefault Range("O2:O20").Select ActiveWindow.SmallScroll Down:=-27 Range("P2").Select Columns("P:P").EntireColumn.AutoFit Range("P2").Select ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",RC[-11])" Range("P2").Select Selection.AutoFill Destination:=Range("P2:P19"), Type:=xlFillDefault Range("P2:P19").Select ActiveWindow.SmallScroll Down:=-33 Range("O8:Y10").Select ActiveWindow.ScrollColumn = 16 ActiveWindow.ScrollColumn = 15 ActiveWindow.ScrollColumn = 12 ActiveWindow.ScrollColumn = 9 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 5 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 1 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 5 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 8 ActiveWindow.ScrollColumn = 9 ActiveWindow.SmallScroll Down:=3 Range("O21").Select ActiveCell.FormulaR1C1 = "Returns " Range("O22").Select Sheets("CODE FOR VBA").Select ActiveWindow.SmallScroll Down:=-57 Range("A1:A35").Select Selection.Copy Sheets("SORT1").Select Application.CutCopyMode = False End Sub Sub Macro2() ' ' Macro2 Macro '  ' Cells.Select ActiveWorkbook.Worksheets("INPUT_DATA").Sort.SortFields.Clear ActiveWorkbook.Worksheets("INPUT_DATA").Sort.SortFields.Add2 Key:=Range( _ "B2:B133"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal ActiveWorkbook.Worksheets("INPUT_DATA").Sort.SortFields.Add2 Key:=Range( _ "C2:C133"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("INPUT_DATA").Sort .SetRange Range("A1:F133") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("H6").Select Columns("A:A").EntireColumn.AutoFit Range("G2").Select ActiveCell.FormulaR1C1 = "=IF(RC[-2]="""",RC[-6],"""")" Range("G2").Select Selection.AutoFill Destination:=Range("G2:G132") Range("G2:G132").Select Columns("G:G").EntireColumn.AutoFit Range("G1").Select ActiveCell.FormulaR1C1 = "Missing Data" Range("H2").Select ActiveCell.FormulaR1C1 = "=COUNTIF(R2C8:R250C8,RC[-7])" Range("H2").Select ActiveCell.FormulaR1C1 = "=COUNTIF(R2C7:R2500C7,RC[-7])" Range("H2").Select Selection.AutoFill Destination:=Range("H2:H132") Range("H2:H132").Select Range("H1").Select ActiveCell.FormulaR1C1 = "IF1" Range("I1").Select ActiveCell.FormulaR1C1 = "IF2" Range("I2").Select ActiveCell.FormulaR1C1 = "=IF(RC[-1]>0,1,0)" Range("I2").Select Selection.AutoFill Destination:=Range("I2:I132") Range("I2:I132").Select Rows("1:1").Select Range("B1").Activate Selection.AutoFilter ActiveWindow.ScrollColumn = 2 ActiveSheet.Range("$A$1:$I$132").AutoFilter Field:=9, Criteria1:="1" ActiveSheet.Range("$A$1:$I$132").AutoFilter Field:=9, Criteria1:="0" ActiveWindow.SmallScroll Down:=-15 Cells.Select Selection.Copy Sheets("SORT1").Select Cells.Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Columns("G:I").Select Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft Columns("F:F").EntireColumn.AutoFit Columns("A:A").Select Selection.Copy Columns("I:I").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Range("$I$1:$I$43").RemoveDuplicates Columns:=1, Header:=xlNo Range("J1").Select ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",1)" Range("J1").Select Selection.AutoFill Destination:=Range("J1:J4") Range("J1:J4").Select ActiveWindow.SmallScroll Down:=12 Range("J50").Select ActiveCell.FormulaR1C1 = "=SUM(R[-49]C:R[-1]C)-1" Range("I50").Select ActiveCell.FormulaR1C1 = "Magic Number" Range("I51").Select ActiveWindow.SmallScroll Down:=-30 Range("L1").Select ActiveWindow.SmallScroll Down:=-3 ActiveCell.FormulaR1C1 = "Market Value" Range("L2").Select ActiveCell.FormulaR1C1 = "=IF(RC[-3]="""","""",RC[-8])" Range("L2").Select Selection.AutoFill Destination:=Range("L2:L49"), Type:=xlFillDefault Range("L2:L49").Select ActiveWindow.SmallScroll Down:=-33 Range("L5").Select ActiveWindow.SmallScroll Down:=24 Range("L51").Select ActiveCell.FormulaR1C1 = "Returns" Range("M52").Select ActiveWindow.SmallScroll Down:=-27 ActiveCell.FormulaR1C1 = "" Range("M52").Select ActiveWindow.SmallScroll Down:=-30 Range("M2").Select ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",RC[-1]*(1+R[50]C))" Range("M2").Select Selection.AutoFill Destination:=Range("M2:M34"), Type:=xlFillDefault Range("M2:M34").Select Selection.AutoFill Destination:=Range("M2:M44"), Type:=xlFillDefault Range("M2:M44").Select Selection.AutoFill Destination:=Range("M2:X44"), Type:=xlFillDefault Range("M2:X44").Select ActiveWindow.SmallScroll Down:=0 Selection.AutoFill Destination:=Range("M2:Z44"), Type:=xlFillDefault Range("M2:Z44").Select ActiveWindow.SmallScroll Down:=-21 Selection.AutoFill Destination:=Range("M2:AA44"), Type:=xlFillDefault Range("M2:AA44").Select ActiveWindow.SmallScroll Down:=-6 Range("AA2:AA44").Select Selection.ClearContents Range("M2:Z44").Select ActiveWindow.SmallScroll Down:=9 Range("L56").Select ActiveCell.FormulaR1C1 = "Equal Weighted " Range("M56").Select ActiveCell.FormulaR1C1 = "=IF(R[-4]C="""","""",AVERAGE(R[-4]C:R[-2]C))" Range("M56").Select Selection.AutoFill Destination:=Range("M56:Z56"), Type:=xlFillDefault Range("M56:Z56").Select Range("L57").Select ActiveCell.FormulaR1C1 = "Value Weighted" Range("M57").Select ActiveCell.FormulaR1C1 = _ "=SUMPRODUCT(R[-55]C[-1]:R[-53]C[-1],R[-5]C:R[-3]C)/SUM(R[-55]C[-1]:R[-53]C[-1])" Range("M57").Select Selection.AutoFill Destination:=Range("M57:Z57"), Type:=xlFillDefault Range("M57:Z57").Select Range("R46").Select ActiveWindow.SmallScroll Down:=9 Range("L56:Z57").Select Selection.Copy Sheets("SORT2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "Returns" Range("A2").Select End Sub  The VBA code that I run is,   Sub SplitIntoCellsPerColumn() 'updatebyExtendoffice 20160225     Dim xRg As Range     Dim xOutRg As Range     Dim xCell As Range     Dim xTxt As String     Dim xOutArr As Variant     Dim I As Long, K As Long     On Error Resume Next     xTxt = ActiveWindow.RangeSelection.Address Sel:     Set xRg = Nothing     Set xRg = Application.InputBox("please select data range:", "Kutools for Excel", xTxt,, ,, , 8)     If xRg Is Nothing Then Exit Sub     If xRg.Areas.Count > 1 Then         MsgBox "does not support multiple selections, please select again", vbInformation, "Kutools for Excel"         GoTo Sel     End If     If xRg.Columns.Count > 1 Then         MsgBox "does not support multiple columns,please select again", vbInformation, "Kutools for Excel"         GoTo Sel     End If     Set xOutRg = Application.InputBox("please select a cell to put the result:", "Kutools for Excel",, ,, ,, 8)     If xOutRg Is Nothing Then Exit Sub     I = Application.InputBox("the number of cell per column:", "Kutools for Excel",, ,, ,, 1)     If I < 1 Then         MsgBox "incorrect enter", vbInformation, "Kutools for Excel"         Exit Sub     End If     ReDim xOutArr(1 To I, 1 To Int(xRg.Rows.Count / I) + 1)     For K = 0 To xRg.Rows.Count - 1       xOutArr(1 + (K Mod I), 1 + Int(K / I)) = xRg.Cells(K + 1)     Next     xOutRg.Range("A1").Resize(I, UBound(xOutArr, 2)) = xOutArr End Sub 

Dieser Code wird jedoch bereits als Modul in das Arbeitsblatt eingefügt. Ich öffne also einfach die Registerkarte "Entwickler" und klicke auf F5, um einige Argumente für die Ausführung des Codes einzugeben.

0
Es wird erwartet, dass Sie die Werte erneut auf der Registerkarte "Entwickler" eingeben. Um dieses Problem zu lösen, bearbeiten Sie Ihr Makro und ändern Sie die Werte dort. LPChip vor 5 Jahren 0
Ich bin ein bisschen verloren Zarina Akhtar vor 5 Jahren 0
Ich habe den Makrocode hinzugefügt, wenn Sie einen Einblick geben könnten Zarina Akhtar vor 5 Jahren 0
@ZarinaAkhtar ,, Bearbeiten Sie besser Ihre Frage und fügen Sie den VBA-Code ein, den Sie aufgenommen haben, und markieren Sie die Bühne oder Zeile, an der Sie das Makro ausführen möchten. Schreiben Sie auch das Ziel. ☺ Rajesh S vor 5 Jahren 0
@ZarinaAkhtar, es ist riesig, man sollte besser das Ziel schreiben, was genau versucht man durch das Makro? Rajesh S vor 5 Jahren 0
Ok, das Makro erstellt Aktienportfolios in Excel. Es ist sehr knifflig, ich habe einige Leute gefragt und sie sagten ein Makro, da ich dies für jeden Monat automatisieren werde !!! Zarina Akhtar vor 5 Jahren 0
Ich werde einfach die Daten hinzufügen und dann das Makro ausführen, um Rückgaben zu erstellen Zarina Akhtar vor 5 Jahren 0
Und wo verhält sich das Makro nicht so, wie Sie es möchten? LPChip vor 5 Jahren 0
Ich habe mit etwas Text eine Lücke in den Code eingefügt! Zarina Akhtar vor 5 Jahren 0
"Während des Automatisierungsprozesses klicke ich auf Entwickler und gebe die Dinge ein, die ich eingeben muss." Warum nicht einfach eine InputBox () verwenden? spikey_richie vor 5 Jahren 0
Hmmm Ich weiß nicht was ein Eingabefeld ist, ich werde es googeln! Zarina Akhtar vor 5 Jahren 0
@spikey_richie wie würde das helfen und warum unterscheidet es sich von der Ausführung des Moduls? Zarina Akhtar vor 5 Jahren 0
Anstatt einen Haltepunkt zu treffen und in die VBA zu wechseln, um Variablenwerte zu ändern, können Sie sie einfach in eine Eingabebox werfen und zügig fortfahren. Sie würden so etwas wie strValueA = Eingabefeld ("Geben Sie einen Zeichenfolgewert für A"), intValueB = Eingabefeld ("Geben Sie einen Zwischenwert für B ein") ein. spikey_richie vor 5 Jahren 0
danke @spikey_richie Ich werde es versuchen !!!!!!! Zarina Akhtar vor 5 Jahren 0

0 Antworten auf die Frage