宏按钮可将一个电子表格中的某些单元格的信息传输到另一个电子表格中

问题描述 投票:0回答:1

我希望能够构建一个宏,可以轻松地将单元格内容从一个电子表格传输到另一个电子表格。让我更详细地阐述一下:我当前打开了两个电子表格。参见picture。左侧的工作表通过我制作的按钮宏(未包含在图片中)工作,并生成三个不同的相邻值。因此,每次我单击该按钮,都会生成一个新的输出。

我希望能够做的是将信息从左侧工作表传输到右侧工作表,分别传输到 G、H 和 I 列(通过可能单击右侧工作表上的按钮),然后它转到下一个空白行,为下一轮生成的值做准备。

我在构造这个(初学者)时遇到了一些麻烦。您能提供一些帮助吗?

这是我到目前为止所拥有的:

Sub Button1_Click()
If Not Intersect(ActiveCell, Range("G:G")) Is Nothing Then
    If ActiveCell.Offset(1, 0) <> vbNullString Then
        ActiveCell.Offset(1, 0).Select
        ActiveCell.Value = Workbooks("Model.xlsx").Worksheets("Optimization").Range("C100").Value
        ActiveCell.Offset(0, 1).Value = Workbooks("Model.xlsx").Worksheets("Optimization").Range("D100").Value
        ActiveCell.Offset(0, 2).Value = Workbooks("Model.xlsx").Worksheets("Optimization").Range("E100").Value
    End If
End If
End Sub

谢谢!

excel vba
1个回答
0
投票

这应该有效

Sub Button1_Click()
Const RowToTakeInformation = 100
Const ColumnToTakeInformation = 3
Const ColToWriteIn = 7
Dim WBDesired As Workbook: Set WBDesired = Workbooks("Model.xlsx")
Dim WSDesired As Worksheet: Set WSDesired = Worksheets("Optimization")
'If everything is in the same WB, I don't see a valid reason why to set it
Dim RowToInsert As Long
Dim CounterColumnsToWrite As Long

    If WBDesired.Worksheets(WSDesired.Name).Cells(RowToTakeInformation, ColumnToTakeInformation).Value <> "" Then ' 1. If WBDesired.Worksheets(WSDesired.Name).Cells(RowToTakeInformation, ColumnToTakeInformation).Value <> ""
    'here I'm assuming it's a table or something like it that automatically recalculates when something is inserted in between
    RowToInsert = Cells(Rows.Count, ColToWriteIn).End(xlUp).Row - 1
    Rows(RowToInsert).Insert Shift:=xlDown
    For CounterColumnsToWrite = 0 To 2
    Cells(RowToInsert, ColToWriteIn + CounterColumnsToWrite).Value = WBDesired.Worksheets(WSDesired.Name).Cells(RowToTakeInformation, ColumnToTakeInformation + CounterColumnsToWrite)
    Next CounterColumnsToWrite
    End If ' 1. If WBDesired.Worksheets(WSDesired.Name).Cells(RowToTakeInformation, ColumnToTakeInformation).Value <> ""
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.