2016-02-26 106 views
0

我遇到了轻微问题的错误。目标代码如下:允许用户选择要修改的工作表(HR1 - HR20),然后选择原始工作表上要复制到选定工作表的单元格(单元格范围)。Excel VBA查找/记录用户选择

问题是用户必须选择他们想要更改的范围,然后运行宏(通过按钮),选择工作表,然后重新设置范围。如果他们只有在运行宏之前选择了一个单元格,那么即使在突出显示该范围之后,该宏也会复制该单元格的值,但在宏提示时他们需要更改该值。有没有办法告诉宏只使用选定的范围?

Dim WSN As Worksheet 
Set WSN = ActiveSheet 
Dim sheetname As String 
sheetname = ActiveSheet.Name 

Unload Me 

On Error GoTo Cancel 
    Dim rng As Range 
    Dim myString As String 
    Set rng = Application.InputBox("select cell range with changes", "Cells to be copied", Default:="Select Cell Range", Type:=8) 
Application.ScreenUpdating = False 
    myString = Selection.Address(ReferenceStyle:=xlA1, RowAbsolute:=False, ColumnAbsolute:=False) 
'MsgBox Selection.Address(ReferenceStyle:=xlA1, RowAbsolute:=False, ColumnAbsolute:=False) 
    Range(myString).Copy 

If CheckBoxALL.Value = True Then 
    Sheets("Cost").Select 
     For i = 1 To 20 
     ActiveSheet.Next.Select 
      rngS = rng.Address 
      Range(rngS).Select 
       ActiveSheet.Paste 
        ActiveWindow.ScrollRow = 85 
     Next i 
    End If 

If CheckBoxHR1.Value = True Then 
    Sheets("Cost").Next.Select 
      rngS = rng.Address 
      Range(rngS).Select 
       ActiveSheet.Paste 
        ActiveWindow.ScrollRow = 85 
    End If 
+0

那么为什么用户要先选择范围步?? – findwindow

+0

步骤应该对sheet1进行更改,按下宏按钮,通过userform选择图纸,选择图纸,单击应用,然后选择需要复制的区域。我的问题是,如果我刚刚在宏按钮按下之前选择了一个随机单元格,宏将从随机单元格中获取数据而不是用户突出显示的范围。 –

回答

1

没有测试,但我认为你可以使用 'RNG' 变量直接

我的意思是

,而不是

Set rng = Application.InputBox("select cell range with changes", "Cells to be copied", Default:="Select Cell Range", Type:=8) 
    Application.ScreenUpdating = False 
    myString = Selection.Address(ReferenceStyle:=xlA1, RowAbsolute:=False, ColumnAbsolute:=False) 
'MsgBox Selection.Address(ReferenceStyle:=xlA1, RowAbsolute:=False, ColumnAbsolute:=False) 
    Range(myString).Copy 

,你可以走这条路

Set rng = Application.InputBox("select cell range with changes", "Cells to be copied", Default:="Select Cell Range", Type:=8) 
    Application.ScreenUpdating = False 
    rng.Copy 
+0

好消息,完美运作。在我运行宏之前,我仍然不确定为什么它使用任何我活动过的单元格,但现在我认为这是无关紧要的。 –