2017-06-09 15 views
0

複数のチームがコピーを作成するプロジェクト管理スプレッドシートを作成しています。私は簡単なアドレス帳を作成したい。私はチームの名前をテーブルに入れ、VBAを使用してMaster Tableを作成します。範囲B4:D5同じシート内で(名前付き)テーブルを複数回コピーしてテーブル名を変更する

3列名を持つ単純なテーブルがあります:

  • 名前
  • 電話
  • メール

私のように(名前マネージャで)この表を命名しているが、 ContactTeam1

この正確な3x2 taをコピーして貼りたいイメージHereのような各チームの下にあるようにして、それぞれの名前付き表をContactTeam2,ContactTeam3などと変更します。

私はVBAを使いたいのですが、我々は多くの異なるプロジェクトを持っているので、できるだけ多くのプロセスを自動化したい、ということです。

私はすべての必要な情報(名前、電話、電子メール)を手で入力します。私がテーブルを使用したいのは、自動的に展開して最後の行の下に新しい行を追加する利点があるからです。

ボーナス機能として、誰かがチームの名前を含む一番上のセルをクリックしたとき。 (Team Blue、など)、対応する範囲のすべての電子メールがクリップボードにコピーされ、電子メールクライアントで使用されます。 (これはテーブルで簡単に行うことができます - 私はそれらを使いたい理由の一つです)。

+0

ボタンに関連付けるか、それともいくつのチームが存在するかを検出して対応する回数をコピーする必要がありますか? – luisarcher

+2

あなたが試したコードと失敗したコードを教えてください。私たちは助けて改善するつもりですが、私たちはコード作成サービスではありません。 – Luuklag

+0

luisarcher、私はすでにシートの行2と3を作成するサブプロシージャを持っています。このサブはボタンに割り当てられ、押されるとこれらの行が作成されます。 Luuklag、実際には私が尋ねたことに関する既存のコードはありません。以前は名前付き範囲で "複製"して名前を変更していないので、どこから始めたらいいのかわかりませんでした。 – Gonik

答えて

0

私は、これは私はそれがContactTeam2から、あなたの限界が何であれに各3つのセルと名前VBAで最高ではないんだけど、何これが行うことは、それが新しい範囲を作成することです

Sub Bouton() 

    Dim cell As Range 
    Dim rng As Range 
    Dim cnt As Integer 
    Dim RangeName As String 
    Dim CellAdd1, CellAdd2 As String 

    For cnt = 2 To ActiveSheet.Range("NumberTimes") 

     Set rng = Range("ContactTeam" & (cnt - 1)) 

     RangeName = "ContactTeam" & cnt 
     CellAdd1 = Cells(rng.Row, rng.Column + 3).Address 
     CellAdd2 = Cells(rng.Row + 1, rng.Column + 5).Address 
     '+ 1 in the row so the named range goes from B4 to D5 

     Set cell = ActiveSheet.Range(CellAdd1, CellAdd2) 
     ThisWorkbook.Names.Add Name:=RangeName, RefersTo:=cell 

     Range("ContactTeam1").Copy Range("ContactTeam" & cnt) 

    Next cnt 

End Sub 

に役立ちます願っています。 NumberTimesという名前の範囲を作成しました。基本的には、いくつの新しい範囲を作成したいのかを教えてください。

+0

こんにちはluisarcher、ご返信ありがとうございます。ほんとうにありがとう。私の質問ですべてのセルについて尋ねたように、あなたのソリューションは実際に名前付き範囲を作成しますが、 'B4:D5'からそのままテーブルをコピーするわけではありません。とにかく、あなたのソリューションは実際に私がこれにどのように正確にアプローチするかについてのアイデアを与えました。私はすぐに来る!再度、ありがとうございます。 – Gonik

+0

名前のついた範囲で2行を取得できるようにコードを変更しました。ただし、名前の範囲に列のタイトルを入れないようにすることをお勧めします。 – luisarcher

0

最も簡単なのは、私たちはここで辞書を使うことができると思います。速いですが、ここで彼は私が試した/試したこと、正確にあなたのデータと作品に。

サブD()

Sheet1.Select

レンジ( "B3")。

選択

Range("b3:d4").Name = "mainteam" 

ActiveCell.Offset(0, 3).Select 

Range("mainteam").Copy ActiveCell 

Range(ActiveCell, ActiveCell.End(xlDown).End(xlToRight)).Select 

Range(ActiveCell, ActiveCell.End(xlDown).End(xlToRight)).Name = "team" & i 

I = I + 1

Whileループを実行します。 i <> 5

End Sub

+0

i =続行したいときはいつでも – ravi

+0

範囲を削除できます(ActiveCell、ActiveCell.End(xlDown).End(xlToRight))。 – ravi

関連する問題