2017-09-01 8 views
0

複数のシートを作成するコードを開発する際に問題が発生し、シート名が他のシートのリストから取得され、作成されたシートでは、テーブルからいくつかのフィールドを更新する必要があります。私は最初に作成されたシート、メインシートセルA1(たとえば)からコピーされる値、そして次に作成されたシート、メインシートセルA2からコピーされた値、そして終了までを意味します。値リストを使用してシートを作成し、テーブルから値を更新しますか?

コードを正常にコピーするまでコードを作成しましたが、テーブルのセルの値を置き換える方法はわかりません。

私はそれほど挑戦していませんが、どんな助けでも大歓迎です。

Set MyRange = Range(Cells(6, 3), Cells(6, 3).End(xlToRight)) 

はまたMOを考えてみます。

おかげ Sarath

私の現在のコード

Sub create_sheets() 

Dim MyCell As Range, MyRange As Range 

Set MyRange = Sheets("input data").Range("C6") 
Set MyRange = Range(MyRange, MyRange.End(xlToRight)) 

For Each MyCell In MyRange 

Sheets("200L_50°C").Copy After:=Sheets(Sheets.Count) 'creates a new worksheet 
Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet 

Next MyCell 

End Sub 

答えて

0

まず、この

Set MyRange = Sheets("input data").Range("C6") 
Set MyRange = Range(MyRange, MyRange.End(xlToRight)) 

は1行で行うことができます堅牢なバージョンRE:私たちは、他のシートをアクティブにするか選択していないので、

Dim i As Long: i = 1 
For Each MyCell in MyRange 
    Sheets.Add After:=Sheets(Sheets.Count) 
    Sheets(Sheets.Count).Name = MyCell.Value 
    'copy the value from main Worksheet - from A1, A2, etc. 
    'to A1 in new worksheet - it remains first sheet I assume 
    Sheets(Sheets.Count).Cells(1, 1).Value = Sheets(1).Cells(i, 1).Value 
    i = i + 1 
Next MyCell 

はまた、Sheet(1)を使用して、不要である:

Set MyRange = Range(Cells(6, 3), Cells(6, Columns.Count).End(xlToLeft)) 

私はむしろ.Addメソッドを使用するシートを作成するには、これを解決しました。

+0

こんにちはMichal、 あなたのコードを使用して、さらに私の要件を満たすように開発しました。私は自分の開発のためのスタートとして使用したコードのおかげです。 –

関連する問題