0

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

第 1 页

顾客:约瑟夫

编号:12345

我更轻松地手动创建了一个包含(客户和 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) 在此处输入图像描述

我也有带有第一页但第 2 页(第 2 页)的图片 2,在此页面中,我复制并粘贴与第 1 页(宏和所有内容)中相同的内容,然后在系统插入时按 insertar 按钮加载表单它在第 1 页而不是在第 2 页。

在此处输入图像描述

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

4

1 回答 1

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")
于 2013-05-24T19:56:00.120 回答