我必须运行我的宏两次,如何解决?

时间:2018-02-14 21:44:07

标签: vba excel-vba excel

我有一个vba代码,可以将值复制/粘贴到我用于作业的格式中。这一切都按预期工作,但我必须运行两次才能完美。

如何修复此问题并运行一次才能正常工作?

Sub WellLogAutomator()

Dim i As Integer
Dim n As Integer
Dim x As Integer
Dim y As Integer

n = Worksheets("Info").Range("C10:C100").Cells.SpecialCells(xlCellTypeConstants).Count

Sheets("Type Data Here").Select
Range("A1:B5").Select
Selection.Copy

For i = 1 To n - 1
    ActiveCell.Offset(rowOffset:=0, columnOffset:=2).Activate
    ActiveSheet.Paste
Next i

Sheets("Info").Select
Cells(10, 3).Select

For x = 0 To n - 1
    Sheets("Data").Select
    Cells(2, 11).Select
    ActiveCell.Offset(rowOffset:=x, columnOffset:=0).Activate
    Selection.Copy
    Sheets("Type Data Here").Select
    Cells(1, 2).Select
    ActiveCell.Offset(rowOffset:=0, columnOffset:=2 * x).Activate
    ActiveCell.PasteSpecial Paste:=xlPasteValues
    'ActiveSheet.PasteSpecial Paste:=xlPasteValues
Next x

Sheets("Data").Select
Range("H2:H65").Select
Selection.Copy
Sheets("Data").Select
Range("I2:I65").Select
ActiveCell.PasteSpecial Paste:=xlPasteValues

With Selection
    .NumberFormat = "General"
    .Value = .Value
End With

End Sub

1 个答案:

答案 0 :(得分:-1)

试试这个,它将使用计数器运行你的代码两次:

Sub WellLogAutomator()

Dim i As Integer
Dim n As Integer
Dim x As Integer
Dim y As Integer
Dim counter as Integer

counter = 0

DoAgain:
n = Worksheets("Info").Range("C10:C100").Cells.SpecialCells(xlCellTypeConstants).Count

Sheets("Type Data Here").Select
Range("A1:B5").Select
Selection.Copy

For i = 1 To n - 1
    ActiveCell.Offset(rowOffset:=0, columnOffset:=2).Activate
    ActiveSheet.Paste
Next i

Sheets("Info").Select
Cells(10, 3).Select

For x = 0 To n - 1
    Sheets("Data").Select
    Cells(2, 11).Select
    ActiveCell.Offset(rowOffset:=x, columnOffset:=0).Activate
    Selection.Copy
    Sheets("Type Data Here").Select
    Cells(1, 2).Select
    ActiveCell.Offset(rowOffset:=0, columnOffset:=2 * x).Activate
    ActiveCell.PasteSpecial Paste:=xlPasteValues
    'ActiveSheet.PasteSpecial Paste:=xlPasteValues
Next x

Sheets("Data").Select
Range("H2:H65").Select
Selection.Copy
Sheets("Data").Select
Range("I2:I65").Select
ActiveCell.PasteSpecial Paste:=xlPasteValues

With Selection
    .NumberFormat = "General"
    .Value = .Value
End With

If counter = 0 then
    counter = counter + 1
    goto DoAgain
else
    exit sub
end if

End Sub