excel 如果取消,则语句结果不匹配

zazmityj  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(110)

我试图通过在Excel中使用.inputboxes来自动化重复性任务。
注意:CopyAmt是从另一个InputBox返回的整数,userInputRange是类型8的框,RowCntuserInputRangeRow.Count

For i = 1 To CopyAmt
    userInputRange.Copy
    ActiveCell.Offset(RowCnt, 0).Activate
    ActiveCell.PasteSpecial
    ActiveSheet.Range(ActiveCell.Offset(, 24), ActiveCell.Offset(RowCnt - 1, 24)).Value = Application.InputBox(Prompt:="Internal Value",  Type:=2)
Next i

如果用户要单击Cancel,我希望只有在删除刚刚粘贴到上面代码第4行的选择后才退出sub。这就是我所尝试的。

For i = 1 To CopyAmt
    userInputRange.Copy
    ActiveCell.Offset(RowCnt, 0).Activate
    ActiveCell.PasteSpecial
    ActiveSheet.Range(ActiveCell.Offset(, 24), ActiveCell.Offset(RowCnt - 1, 24)).Value = Application.InputBox(Prompt:="Internal Value",  Type:=2)
    If ActiveSheet.Range(ActiveCell.Offset(, 24), ActiveCell.Offset(RowCnt - 1, 24)).Value = False Then
        Selection.Delete
        Exit Sub
    End If
Next i

这导致了一个错误的输入,我希望一些澄清的事情,我做错了,或只是没有效率。
谢谢你抽出时间。

qxgroojn

qxgroojn1#

肖恩
给予这个。注意:这是未经测试的代码,但应该工作。

For i = 1 To CopyAmt

  userInputRange.Copy
  ActiveCell.Offset(RowCnt, 0).Activate '*** Changes ActiveCell!
  With ActiveCell                       '*** Use With block to simplify code
    .PasteSpecial
    Temp = Application.InputBox(Prompt:="Internal Value")
    If (Temp <> False) Then
      ActiveSheet.Range(.Offset(, 24), .Offset(RowCnt - 1, 24)).Value = Temp
    Else
      .ClearContents '*** You don't want to delete the cell just clear the value.
      Return         '*** Get me out of the Subroutine
    End If
    
  End With
  
Next i

编辑:从Application.InputBox行中删除了Type=2。您可以在后面的代码中测试所需的数据类型。

相关问题