2016-05-09 19 views
0

行の最初の列に値が入力されたときに特定のセルにデフォルト値が設定されるワークシートマクロを作成しようとしています。その行の他のセルに同じ行を追加します。たとえば、ユーザーが2Aに何らかの値を入力すると、セル2Cおよび2Dにはそれぞれ番号10および20が自動的に入力されます。次に、ユーザーが2Sで値を入力すると、その同じ値がセル2Iと2Jに自動的に戻されます。Excelワークシートでマクロを結合

Ralphさん、ありがとうございました。私はstackoverflowのと、一般的なインターネット検索で同様の質問を研究して見つけたもののオフに基づいて、私は次のようにまとめる:

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim A As Range, S As Range, InteA As Range, InteS As Range, r As Range 
Set A = Range("A:A") 
Set S = Range("S:S") 
Set InteA = Intersect(A, Target) 
Set InteS = Intersect(S, Target) 
Application.EnableEvents = False 
If Not InteA Is Nothing Then 
    For Each r In InteA 
     r.Offset(0, 2).Value = "10" 
     r.Offset(0, 3).Value = "20" 
    Next r 
ElseIf Not InteS Is Nothing Then 
    For Each r In InteS 
     r.Offset(0, -9).Value = Target 
     r.Offset(0, -10).Value = Target 
     r.Offset(0, -11).Value = Target 
    Next r 
End If 

Letscontinue: 
Application.EnableEvents = True 
Exit Sub 
Whoa: 
MsgBox Err.Description 
Resume Letscontinue 
End Sub    
+2

StackOverflowへようこそ、DaddyLongLegs。これは無料のコード作成サービスではありませんのでご注意ください。しかし、私たちは同僚のプログラマー(および志望者)にコードを手助けすることを熱望しています。 [良い質問をするにはどうすればよいですか](http://stackoverflow.com/help/how-to-ask)のヘルプトピック、および[最小限の、完全で検証可能な例](http ://stackoverflow.com/help/mcve)。その後、達成したいタスクを完了するためにこれまでに書いたVBAコードで質問を更新してください。とにかく、 'Worksheet_Change'イベントを調べたいと思うかもしれません。 – Ralph

+0

フォローアップと同じように質問がありますか、元の投稿の編集として自分の質問に回答を投稿しましたか(元の投稿を削除しましたか)コードが問題なく実行されているようです。それはあなたがしたいことをしていますか? – Ralph

+0

昨日私はカラムAとSに値を入力したときに何の反応も得ていなかったので問題はありましたが、私はそれを試しましたが、あなたが指摘したように今はうまくいっているようです。 「S」を「目標」に変更して、私が望むものを正確に実行しなければなりませんでした。ありがとう。 – DaddyLongLegs

答えて

0

実行するマクロを取得するには、いくつかの種類のイベントが発生することがあります。ワークシートに何か変更が加えられたときにマクロを実行しようとするのは魅力的ですが、それがどれくらいの頻度でトリガーされるのか想像してみてください。すべての時間。あなたが列Aに入力していない場合、10 & 20がそれらのセルに飛び込み始めて、列Aに入力していない場合にプロセスをスキップするために条件付きコードを書き込むと心配する必要があります。

あなたが好むかもしれない別のオプション。データがAに存在する場合、10 & 20になり、列CおよびDの数式を入力

= IF(A2 <> ""、10、 "")または= IF(ISNUMBER(A2)、10 、0)...好きなものは何でも。

ヘッダー行とデータ行を選択し、[挿入]メニューの[実際のExcelテーブル]に変換します。 (Insert ... Table)列Aに入力すると、数式が新しい行に拡張されます。

マクロは避けられますか?

+0

残念ながら、これは動作することが保証されていません。他の誰かがこれらの「デフォルト」の式を別の式で上書きすると(たとえば、列Aと列Bの値でその列を埋めるため)、挿入された次の行の結果/式が異なる可能性があります。 – Ralph

+0

ドリーにお返事いただきありがとうございます。マクロを使用する必要がある理由は、ユーザーが値を入力できる行の数が、スプレッドシートの用途に応じて変化する可能性があるためです。基本的には、タスクに必要なエントリの数に基づいてこれらのエントリを動的に作成しようとしています。 – DaddyLongLegs

関連する問題