2016-05-08 9 views
1

タイトルはかなりわかりやすく、目的はシート1のVBAを使用してシート2のセルセル "U6"、コピーしたテキストをSheet1のモジュールに貼り付けます。Excel 2013 VBA - シート2の1つのセルからテキストをプログラムでコピーし、Sheet1モジュールに貼り付け

この場合、ワークシートからモジュールにテキストをコピーする理由は(ですが、これはおそらくもっと効率的な方法で行うことができますが、私はこのメソッドに固執したいと思いますこの問題のために)は、Sheet2のCellにWorkBookの他の機能によって決定されたいくつかの変数と一緒に短い行のコード(4行)にVBA構文の複数の行を配置する数式が含まれていることです。このシナリオでは、Sheet2の結果をSheet2のモジュールにコピーすることが望ましいです。

コードソースがワークシート上にあり、モジュール内にまだ存在しないため、私が間違っていない限り、私はVBIDEが適切な解決策ではないと思います。

ありがとうございます。

答えて

0

これは2つの方法で実現できます。私は以下の両方を書いています。あなたがしたいと思いますなぜ1

Sub Copy() 
'Method 1 
Sheets("Sheet2").Range("U6").Copy  
Destination:=Sheets("Sheet1").Range("A1") 

'Method 2 
'Copy the data 
Sheets("Sheet2").Range("U6").Copy 
'Activate the destination worksheet 
Sheets("Sheet1").Activate 
'Select the target range 
Range("A1").Select 
'Paste in the target destination 
ActiveSheet.Paste 
Application.CutCopyMode = False 
End Sub 
+0

これらはそれぞれ、良い結果を得るための2つの可能な方法を提供するために時間を割いていただきありがとうございます。ただし、これらの2つの方法のそれぞれは、あるワークシートのデータを別のワークシートに貼り付けるのに対し、ワークシートから別のワークシートのExcelオブジェクトまたはコード名にデータをコピーして貼り付けることを目標としています。 VBAコードを入力します)。ありがとうございました。 – Majora

0

ないアイデアのいずれかを使用しますが、.....

  • Microsoft Visual Basic For Applications Extensibility 5.3.
  • にVBEの参照を追加へのプログラムによるアクセスを有効にすることができますVBAプロジェクト
    Excel 2010では、Developerタブを選択し、Macro Securityボタンをクリックします。
    マクロ設定の下でVBAプロジェクトオブジェクトモデルへの信頼アクセス

これに似たコードを使用します。

Sub AddProcedureToModule() 

     Dim VBProj As VBIDE.VBProject 
     Dim VBComp As VBIDE.VBComponent 
     Dim CodeMod As VBIDE.CodeModule 
     Dim LineNum As Long 
     Dim x As Long 

     Set VBProj = ActiveWorkbook.VBProject 
     Set VBComp = VBProj.VBComponents("Sheet1") 
     Set CodeMod = VBComp.CodeModule 

     x = 1 
     With CodeMod 
      LineNum = .CountOfLines + 1 
      .InsertLines LineNum, "Public Sub MyProcedureName()" 
      LineNum = LineNum + 1 
      Do While Sheet1.Cells(x, 1) <> "" 
       .InsertLines LineNum, " " & Sheet1.Cells(x, 1) 
       x = x + 1 
       LineNum = LineNum + 1 
      Loop 
      .InsertLines LineNum, "End Sub" 
     End With 

End Sub 

これはVBEにシート1のA列にあるものは何でもコピーします。
http://www.cpearson.com/excel/vbe.aspx

編集:あなたの質問を再読み込みした後 は、このコードは、Sheet1のモジュール内のコードの下にコメントとしてU6に値を追加します。

Sub AddCommentModule() 

     Dim VBProj As VBIDE.VBProject 
     Dim VBComp As VBIDE.VBComponent 
     Dim CodeMod As VBIDE.CodeModule 
     Dim LineNum As Long 

     Set VBProj = ActiveWorkbook.VBProject 
     Set VBComp = VBProj.VBComponents("Sheet1") 
     Set CodeMod = VBComp.CodeModule 

     With CodeMod 
      LineNum = .CountOfLines + 1 
      .InsertLines LineNum, "'" & Sheet1.Range("U6") 
     End With 

End Sub 

注 - 中これらのインスタンスはシート1はシートのコードネームであり、必ずしもシートタブに表示される名前ではありません。これを使用するには、Sheet1の代わりに​​を使用します。

編集2(私は家に帰って午後5時30分を待っていると):あなたは、細胞U6に入力するたび
はSheet1のモジュールにこのコードを追加してコメントを自動的に更新します:

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Target.Address = "$U$6" Then 
     AddCommentModule 
    End If 

End Sub 
関連する問題