Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 宏按钮将信息从一个电子表格中的特定单元格传输到另一个电子表格中_Vba_Excel_Macros - Fatal编程技术网

Vba 宏按钮将信息从一个电子表格中的特定单元格传输到另一个电子表格中

Vba 宏按钮将信息从一个电子表格中的特定单元格传输到另一个电子表格中,vba,excel,macros,Vba,Excel,Macros,我希望能够构建一个宏,能够轻松地将单元格内容从一个电子表格传输到另一个电子表格。让我详细说明一下:我目前有两个电子表格。看见左边的工作表通过我制作的按钮宏工作(未包含在图片中),并生成三个不同的相邻值。因此,每次我点击按钮,就会产生一个新的输出 我希望能够做的是将信息从左边的工作表转移到右边的工作表,分别转移到G、H和I列(通过可能单击右边工作表上的按钮),然后让它转到下一个空行,为下一轮生成的值做准备 我在构造这个(初学者)时有点困难。你能提供一些帮助吗 以下是我到目前为止的情况: Sub B

我希望能够构建一个宏,能够轻松地将单元格内容从一个电子表格传输到另一个电子表格。让我详细说明一下:我目前有两个电子表格。看见左边的工作表通过我制作的按钮宏工作(未包含在图片中),并生成三个不同的相邻值。因此,每次我点击按钮,就会产生一个新的输出

我希望能够做的是将信息从左边的工作表转移到右边的工作表,分别转移到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
子按钮1\u单击()
如果不相交(ActiveCell,Range(“G:G”))则为空
如果ActiveCell.Offset(1,0)为vbNullString,则
ActiveCell.Offset(1,0)。选择
ActiveCell.Value=工作簿(“Model.xlsx”).工作表(“优化”).范围(“C100”).值
ActiveCell.Offset(0,1).Value=工作簿(“Model.xlsx”).工作表(“优化”).范围(“D100”).值
ActiveCell.Offset(0,2).Value=工作簿(“Model.xlsx”).工作表(“优化”).范围(“E100”).值
如果结束
如果结束
端接头
谢谢

这应该行得通

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
子按钮1\u单击()
常数RowToTakeInformation=100
Const ColumnToTakeInformation=3
常数ColToWriteIn=7
将WBDesired设置为工作簿:设置WBDesired=工作簿(“Model.xlsx”)
将WSDesired设置为工作表:设置WSDesired=工作表(“优化”)
如果一切都在同一个WB中,我看不出设置它的正当理由
将RowToInsert变暗为长
暗淡的反柱状灰岩
如果WBDesired.Worksheets(WSDesired.Name).Cells(RowToTakeInformation,ColumnToTakeInformation)。值为“”,则为“1”。如果WBDesired.Worksheets(WSDesired.Name).Cells(RowToTakeInformation,ColumnToTakeInformation).Value“”
在这里,我假设它是一个表或类似的东西,当在它们之间插入一些东西时,它会自动重新计算
RowToInsert=单元格(Rows.Count,ColToWriteIn).End(xlUp).Row-1
行(RowToInsert)。插入移位:=xlDown
对于CounterColumnsToWrite=0到2
单元格(RowToInsert,ColToWriteIn+CounterColumnsToWrite).Value=WBDesired.Worksheets(WSDesired.Name).单元格(rowtoakeinformation,columntoakeinformation+CounterColumnsToWrite)
下一个反柱体
如果'1'结束。如果WBDesired.Worksheets(WSDesired.Name).Cells(RowToTakeInformation,ColumnToTakeInformation).Value“”
端接头

欢迎来到S.O!你试过什么吗?如果是,请提供代码,查看和。友好提示:StackOverflow不是“我们为您编码”服务提供商。道歉。我已经添加了我当前的代码。非常感谢!我似乎在Set WSDesired=Worksheets(“优化”)工作表上遇到了一个错误,它声称下标超出了范围。我很确定工作表的名称是正确的。Excel不能放在那里,你检查拼写了吗?如果是这样,可能其中有空格。您可能需要
Set WSDesired=WBDesired.Worksheets(“优化”)
。以便安全地参考
“Model.xlsx”
文件的
“优化”
工作表。而
Set WSDesired=Worksheets(“优化”)
将引用当前活动工作簿的
“优化”
工作表。然后在整个代码中使用它!