2016-08-09 7 views
-1

1つのスプレッドシートから別のスプレッドシートに簡単にセル内容を転送できるマクロを構築したいと考えています。私は詳細を詳しく説明しましょう:私は現在、2つのスプレッドシートを開いています。 pictureを参照してください。左のワークシートは私が作ったボタンマクロ(写真には含まれていません)を介して動作し、3つの異なる隣接値を生成します。したがって、ボタンをクリックするたびに、新しい出力が生成されます。マクロ1つのスプレッドシート内の特定のセルから別のスプレッドシートに情報を転送するボタン

私ができることをしたいのは、左側のワークシートから右側のワークシートに、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 

ありがとう!

+0

がS.Oへようこそ動作するはずです!何か試しましたか?もしそうなら、コードを提供して、[ツアー](http://stackoverflow.com/tour)と[質問する](http://stackoverflow.com/help/how-to-ask)を見てください。 )。フレンドリーリマインダー:StackOverflowは "あなたのためのコード"サービスプロバイダーではありません。 [VBA入門](https://blog.udemy.com/excel-macros-tutorial/) – Sgdva

+0

お詫び申し上げます。現在のコードを追加しました。 –

答えて

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 
+0

ありがとう、たくさん! WSDesired = Workheets( "Optimization")ワークシートで、添え字が範囲外であると主張する箇所でエラーが発生しているようです。私は、ワークシート名が正しいことをかなり確信しています。 –

+0

Excelはそこに嘘をつくことはできません。スペルをチェックしましたか?もしそうなら、おそらくそれの中に空白があります。 – Sgdva

+1

'Set WSDesired = WBDesired.Worksheets(" Optimization ")が必要になるでしょう。 '' Model.xlsx "'ファイルの ''最適化 ''ワークシートを安全に参照するためです。 'Set WSDesired = Workheets(" Optimization ")は、現在アクティブなワークブックの"最適化 "のワークシートを参照します。その後、コード全体でそれを使用してください! – user3598756

関連する問題