• 締切済み

エクセル マクロ自動化

現在 マクロの勉強をしています。 その中でいくつかプログラムを組んだのですが 例 Sub 不良計算() プログラム内容 End sub これをシートのA列からC列のセルの値が変 動すると自動でマクロが動く仕様にする方法を教えていただけないでしょうか?

みんなの回答

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.1

「変動」が入力したらという意味でしたら、該当シートのコードに以下のような記載でいかがでしょう。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <= Range("C:C").Column Then Application.EnableEvents = False 不良計算 Application.EnableEvents = True End If End Sub

関連するQ&A

  • エクセルのマクロについて

    QNo.3421130で質問させて頂いた件の続きなのですが 入力シート(1)のA1に入力された値を、シート2のB1に表示(つまりB列の同じ行数のセルに表示)するというマクロをお教え頂き、早速実践してみましたが、入力シートA1に入っている値が入力シートA10から算出された値(例:A11に日付の2007/10/18と入っていて、A10にはMONTH関数で10だけを抽出している。そのA10の値10をA1が参照している状態やIF関数で反映された値等)がシート2に表示されません。 また本マクロは入力シート(1)とシート2の同じ行列のセルの表示しか出来ませんが、たとえば入力シート(1)のA2セルの値をシート2のB4に表示(任意で表示位置を変更する方法、シート2の反映セルを下へずらす等)が分りません。 以下、お教え頂いたマクロです。 Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Column = 1 Then    Sheets("Sheet2").Cells(Target.Row, "B").Value = Target.Value  End If End Sub 続きの質問であることと、説明が分りにくく大変申し訳ありません。 非常に困っております。よろしくお願いします。

  • EXCELのシート名自動入力

    EXCELでシート名にセルA1の値を自動入力したいので、 下記のマクロを使いましたが、いちいちマクロを実行しないと自動入力できません。 Public Sub SheetName() ActiveSheet.Name = Range("A1").Value End Sub これを、マクロを実行しなくても、セルA1の値が変わった時点で 自動的にシート名も変わるようにできないでしょうか?

  • エクセル マクロについて

    エクセルでネットの情報(為替の値動き)を自動更新で取得しています。自動更新前の情報を同一シート(同一シートが無理な場合は別シートでもいいのですが…)にコピペし一覧にするマクロはありますか? Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then         'A1のセルの値が変化したら・・・ n = Cells(Rows.Count, "B").End(xlUp).Row + 1  ’B列の最終行を探しその次の行に・・・ Range("B" & n).Value = Range("A1").Value    ’A1の値を貼り付けていく End If End Sub これだと手動セルを上書きした時しか動いてくれませんでした。検索もしたのですが見当たらなくて困っています。お力を貸してください。

  • エクセルのブックを開いた時にマクロを自動定期に実行したいのですが。

    エクセル97でブックを開いたときに、自動的にマクロを実行させたいのですが、どのようにマクロを記述すればいいのか教えて頂けませんか。 sub autorun() sheets(2).select sheets(1).cells(2,2)=cells(5,5) end sub のように、シート2のある数値をシート1のセルに自動的に貼付したいのですが。 このマクロは自動的には実行されませんので、どうすれば自動的に実行するようにできるのかが知りたいのですが。 よろしくお願いします。

  • マクロ初心者です。エクセルのマクロについてです。

    現在知識が全くない状態でマクロを使ったプログラミングを改良しようとしています。 現在のプログラミングでは、与えられたデータをあらかじめ計算し、その値を直接プログラミングに組み込んでます。 今回は直接プログラムに打ち込んである値を、別シートのマクロで自動的に計算し、その結果をプログラムが読み込むようにしたいと思います。 簡単に言えば、マクロのプログラムに直接計算結果を組み込むのではなく、別シートで計算したものをプログラムに組み込みたいということです。 例として、 100円と200円の商品を買い、それを二人で半分ずつ支払う計算結果と 200円と400円の商品を買い、それを二人で半分ずつ支払う計算結果 をプログラムに組み込むとすると、現在では一人あたり150円と、300円という数字を直接プログラムに打ち込んでいます。 これを、別シートで計算し、それをマクロのプログラムに読み込ませることは可能でしょうか? また、可能ならば、大体の流れはどういったものになるのか教えてもらえませんでしょうか? よろしくお願いします。

  • マクロの自動実行などについて

    エクセル2003のVBAマクロについて質問です あるワークシートに値が入力されたら、マクロを自動実行するように出来ないでしょうか? 又、そのセルの値を別のセルにコピーしたいのですが、データを入力する度にセルの場所が ひとつ下へずれます。この最終列のセルの値を必ず拾うようにするにはどうすればよいでしょうか? ややこしくてすいません

  • EXCELのマクロに関して

    vbaのマクロに関して質問があります。 マクロをどのように作ればよいでしょうか? マクロは以下のようになっています。sheet1以外(sheet2,sheet3など)に単語を入れて、sheet1でフラッシュ単語のようにするマクロです。これに付け加えたい内容があります。sheet1のセルにある値を入れれば、sheet1以外のシートのある特定の列をフラッシュ単語としてだしたいと考えています。シートと列を指定したいと考えています。 どのように付け足せばよいでしょうか? Sub sample() Dim i As Integer i = 1 Worksheets("sheet1").Activate Do Sheet1.Range("A1").Value = Sheet3.Range("b" & i).Value '1000で1秒,oで場所,sheet2の場所 Call Sleep(1000) DoEvents i = i + 1 Loop Until IsEmpty(Sheet3.Range("b" & i).Value) '1000で1秒,oで場所,sheet2の場所 End Sub

  • エクセルマクロでの計算について(2007)

    エクセルマクロ初心者です。 試行錯誤しながら作成しています。 セルB1には直接計算式を入れており(=(480+(A1)*10)/480*I1) その結果次第(70以下)でセルC1に計算結果(=(75-B1)*.48)をいれて 70より大きければセルC1に"-"を入れたいのですが上手く計算してくれません。 この処理を約65個のセルにしようと思っています。(セルの列はバラバラです) どうすればよいかご教示ください。 ちなみに現在作成している文は Private Sub 計算_Click() Worksheets("sheet2").Select If Range("B1").Value <= 70 Then Range("C1").Formula = "=(75 - (B1)) * 0.48" Else: Range("C1").Value = "-" End If End Sub よろしくお願いいたします。

  • Excelマクロのことで教えて下さい

    初歩的なことですみません。 E列の値をF列に値を入れるために下記のマクロを組みました。 Sub test() Worksheets("Sheet1").Select Dim i As Long For i = 2 To Cells(Rows.Count, 4).End(xlUp).Row Range("F2").Value = "=E2/1024/1024" Cells(i, 6).FillDown Range(Cells(2, 6), Cells(i, 6)).Copy Range("F2").PasteSpecial Paste:=xlValues Next i End Sub ところがF列に「値のみを貼り付け」をした時に、途中から同じ値のみがコピーされてしまい困っています。 (画像参照) うまく貼り付けることができるマクロをお教え下さい。 よろしくお願いいたします。

  • エクセルのマクロについて

    エクセル2003を使用しています。もしよかったら教えてください。 【例】 エクセルシートを2つ使うことを前提として、 Sheet1にはA1:F50の6列範囲セルに対して1~60の範囲内の数字が決められた背景色とフォント色に従い元々ランダムに入っております。 次に新たにSheet2を作り、そのE1:J50の6列範囲セルに値を他からコピーしてきた数字がランダムに入っています。 上記Sheet1セル範囲とSheet2セル範囲を比較して、それぞれのセル範囲内の数字がそれぞれ一致した場合、Sheet2のセル群をSheet1のセルの背景色とフォントカラーを同一に変更するマクロがわかりませんでした。 また1~60範囲外数値であれば処理しません。 調べても、数値入力した時点で他のセルの背景・フォント色を同一に変更する方法しか無かったので、For Eachを使い、試してみたのが下記のマクロです。 Private Sub Worksheet_Change(ByVal Target As Range) Dim v, c As Range '//変更されたセル範囲・値をチェックして、関係なければ処理をしない If Target.Count > 1 Then Exit Sub If Intersect(Range("E1:J50"), Target) Is Nothing Then Exit Sub v = Target.Value If Not IsNumeric(v) Or v < 1 Or v > 60 Then Exit Sub '//参照するシートの範囲について順にチェック '//値が同じだったら、フォントカラーと背景色を同じにして終了 For Each c In Worksheets("sheet1").Range("A1:F50") If c.Value = v Then Target.Interior.ColorIndex = c.Interior.ColorIndex Target.Font.ColorIndex = c.Font.ColorIndex Exit For End If Next c End Sub これで実行するとSheet2に数値を新たに入力してうまくいきます。 ただ、Sheet2へ他からコピーしてきた数値のセル背景・フォント色を変更することができないです。 上記の作業を次から次へと新規で対応しなければならず、数値の入力に疲れてきております。 うまくいくマクロありますでしょうか?

専門家に質問してみよう