VBA Excel无法复制和粘贴拉动单元格位置的宏

时间:2013-05-24 19:47:16

标签: excel vba

我有一个看起来像这样的数据表

第1页

客户:约瑟夫

Id:12345

我手动创建一个包含(Costumer和ID)的表单。在表格中我有信息。

我有一个插入按钮,可以将信息传递到页面内的特定单元格。

Private Sub CommandButton1_Click()

i = Cells(Rows.Count, 1).End(xlUp).Row + 23 'Get last empty cell in column A
Range("D" & i).Value = TextBox1
'Range("D1").Value = TextBox1
Range("D2").Value = TextBox4
Range("C4").Value = TextBox2
Range("C5").Value = TextBox3
    If OptionButton1.Value = True Then
       Range("A7").Value = OptionButton1.Caption
       ElseIf OptionButton2.Value = True Then
       Range("A7").Value = OptionButton2.Caption
       ElseIf OptionButton3.Value = True Then
       Range("A7").Value = OptionButton3.Caption
       Else
       Range("A7").Value = OptionButton4.Caption
     End If
Unload Me
End Sub   

我的问题是我需要在工作表的第2页中执行相同的操作,当我复制并粘贴宏以在第2页中执行相同操作时,我需要将值重新放在相同位置但在第2页中,但是宏在页面1的相同单元格中释放日期,如果你看代码我将Value = TextBox1设置为“D1,我需要一个公式,复制宏后我调用了表格,它粘贴在活动表,不像现在那样在第一页上。 尝试放置一个计数器,但这不起作用。任何帮助将不胜感激。

在这张图片上你会看到sheet1“hoja1”和page1“pagina 1”以及加载形式(datos del presupuesto) enter image description here

我还有第一张图片2但是第2页(pagina 2),在这个页面我复制并粘贴我在第1页(宏和所有内容)中的相同内容我按下insertar按钮加载表单,当sistem insert它在第1页而不是在2页中完成。

enter image description here

它应该是一个公式,可以帮助我当我复制一个页面并粘贴宏将所有单元格值拉到页面我粘贴所有数据。

1 个答案:

答案 0 :(得分:1)

如果要从特定工作表中获取范围,请在范围之前使用该工作表:

Sheet1.Range("D" & i).Value = TextBox1 'takes cell from first sheet.
Sheet2.Range..... 'takes cell from second sheet.


ActiveWorkbook.Worksheets("SheetName").Range.... 'you get sheets by their names

您还可以将工作表放入变量中,以便继续使用它而不是重复使用工作表名称:

Dim TargetSheet as Worksheet
Set TargetSheet = ActiveWorkbook.Worksheets("SheetName")

TargetSheet.Range.....
TargetSheet.Range......
TargetSheet.Range......

所以你的代码可能是这样的:

Private Sub CommandButton1_Click()

    'First thing: select your specific sheet:
    Dim MySheet as Worksheet
    Set MySheet = ActiveWorkbook.Worksheets("TheNameOfYourSheet")

    'Now, before every range or cell, take them FROM that specific sheet
    i = MySheet.Cells(Rows.Count, 1).End(xlUp).Row + 23 'Get last empty cell in column A

    'Select your pivot cell (don't forget MySheet)
    Dim PivotCell as Range
    Set PivotCell = MySheet.Range("D" & i)

    'Put the value in the pivot
    PivotCell.Value = TextBox1 

    'Now you can start using the offsets (it's really better, as you commented)
    PivotCell.Offset(0,1).Value = TextBox4 'That would be D2 if Pivot is D1

    'I'm not sure if you can use negative offsets, 
    'if not, take the top left cell of your target area as pivot -
    'But there surely will be an error if the offset falls to the left or above A1
    PivotCell.Offset(3, -1).Value = TextBox2 'That is C4 -         
    PivotCell.Offset(4,-1).Value = TextBox3 'C5

    If OptionButton1.Value = True Then
        PivotCell.Offset(6,-3).Value = OptionButton1.Caption ' A7
    ElseIf OptionButton2.Value = True Then
        PivotCell.Offset(6,-3).Value = OptionButton2.Caption
    ElseIf OptionButton3.Value = True Then
        PivotCell.Offset(6,-3).Value = OptionButton3.Caption
    Else
        PivotCell.Offset(6,-3).Value = OptionButton4.Caption
    End If

    Unload Me
End Sub   

更好的一件事就是Name一个细胞。在Excel屏幕的左上角,有一个文本框,其中显示所选单元格坐标(如“A1”,“B2”,...)。如果在该框中键入名称,则可以通过以下代码使用该命名单元格:

ActiveSheet.Range("NamedCell")