Excelのマクロで複数セルにIFを指定する方法

このQ&Aのポイント
  • Excelのマクロを使用して、複数のセルにIFを指定する方法を教えてください。
  • また、セルA1をダブルクリックした時に、セルC1も同時に増やす方法も教えてください。
  • お願いします。
回答を見る
  • ベストアンサー

Excelのマクロで、IFを複数セルに指定するには

セルA1、B1、C1をダブルクリックすると各セルの値が+1ずつ増える Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$A$1" Then Target.Value = Target.Value + 1: Cancel = True If Target.Address = "$B$1" Then Target.Value = Target.Value + 1: Cancel = True If Target.Address = "$C$1" Then Target.Value = Target.Value + 1: Cancel = True End Sub というマクロを使用致しておりますが、これに追加で セルA1をダブルクリックした時に、A1と同時にセルC1も+1増やせる 方法があれば教えて頂けると幸いです。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

>A1をダブルクリックした時に、A1と同時にセルC1も+1増やせる Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$A$1" Then Target.Value = Target.Value + 1: range("C1") = raneg("C1") + 1 : Cancel = True If Target.Address = "$B$1" Then Target.Value = Target.Value + 1: Cancel = True If Target.Address = "$C$1" Then Target.Value = Target.Value + 1: Cancel = True End Sub

shigeruuji7803
質問者

お礼

をを!まさしくこの回答を探しており、とても助かりました。 心より感謝致しております。 本当にありがとう御座いました。

その他の回答 (1)

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.1

A1時にのみC1も数値を増加させるのであれば下記でも可能です。 指定セル範囲以外はsubを抜けるとすれば、if文を繰り返さなくても処理が可能です。 セル範囲が大きい場合や列全体や、行全体を指定する場合は便利です。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A1:C1")) Is Nothing Then Exit Sub If Target.Address = "$A$1" Then Target.Value = Target.Value + 1: Cancel = True Target.Offset(0, 2).Value = Target.Offset(0, 2).Value + 1 End If Target.Value = Target.Value + 1: Cancel = True End Sub A1~C1 WクリックでC1~E1の数値を増加させるのであれば下記方法でも可能です。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A1:C1")) Is Nothing Then Exit Sub Target.Value = Target.Value + 1: Cancel = True Target.Offset(0, 2).Value = Target.Offset(0, 2).Value + 1 End Sub

shigeruuji7803
質問者

お礼

素早い回答ありがとう御座いました。 今回は膨大なIFの繰り返しを入力してしまっていたので、 使用できませんでしたが、とてもわかりやすく理解できましたので、 今後の入力にはとても役立つ勉強になりました。 ありがとう御座いました。

関連するQ&A

  • Excel 2007 マクロについて

    初心者なりに試行錯誤しながら、チャレンジしています。 B1セルには日付が入力されています。 B1をダブルクリックしたときにUserForm1のTextBox1にその 日付を表示したいのですが上手くいきません。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("B1:B15")) Is Nothing Then Exit Sub Cancel = True UserForm1.Show UserForm1.TextBox1.Value = Target.Value Unload UserForm1 End Sub どこをどのように修正したらよろしいでしょうか?

  • エクセル VBA について

    エクセルで、 ダブルクリックしたら"*"を表示したい範囲に【入力】という名前をつけ、 ダブルクリックしたら9つ左のセルの内容を表示したい範囲に【金額】という名前をつけ、 二つの構文?をVisual Basicに作成したんですが、エラーが出てしまいます。 ひとつずつだと上手くいくのですが、なぜでしょうか? わかる方教えてください。 あと申し訳ないのですが、VBAはまったくわからないため、ネット上で構文をコピーして貼り付けました。 そんな者でもわかる修正の説明をお願いいたします。 以下が作成し、エラーとなってしまう構文です。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "金額" If Target.Value = "" Then Target.Value = Target.Offset(0, -9).Value Cancel = True End If End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "入力" If Not Intersect(Range(RangeName), Target) Is Nothing Then Cancel = True If Target = "*" Then Target = "" Else Target = "*" End If End If End Sub

  • エクセルで特定のセルへの直接入力だけを禁止したいんです。

    過去の質問を参考に『セルをダブルクリックすると"○"と入力される』というマクロを○⇒●⇒-⇒  ⇒○⇒・・・として使っているんですが、ダブルクリックの度にセルが直接入力の状態(縦の棒の点滅)になってしまい、一度他のセルをクリックしないと次へ進めずに困っています。 良い方法ってあるのでしょうか? ちなみに使用しているマクロは Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const rng As String = "A1:A3" '処理対象のセル範囲 If Not Application.Intersect(Target, Range(rng)) Is Nothing Then If Target.Value = "" Then Target.Value = "○" ElseIf Target.Value = "○" Then Target.Value = "●" ElseIf Target.Value = "●" Then Target.Value = "-" Else Target.ClearContents End If End If End Sub というものです。 よろしくお願いします。

  • エクセルコードについて

    エクセルコードについて Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   If Target.Row >= 1 And Target.Row <= 10 And Target.Column >= 1 And Target.Column <= 10 Then     If Target.Value = "○" Then       Target.Value = ""     Else       Target.Value = "○"     End If     Cancel = True   End If End Sub ではセルA1~J10ですが、これをA1~A10などに変更するのにはどのようにすればよろしいでしょうか。

  • エクセルにてダブルクッリクしたときの動作

    エクセルにて特定のセルをダブルクリックをした時に日付を表示させたくて以下のマクロを組みました。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean) If intersect(Target, Range("A1")) Is Nothing Then Exit Sub If ActiveCell = "" Then ActiveCell = Format(date, "yyyy") Cancel = True End If End Sub この場合A1セルをダブルクリックした時のみ西暦が入力されるようになっていますが、他のセルで、例えばB1セルでは月、C1セルでは日にちをダブルクリックで入力させるにはどうしたら良いでしょうか? If intersect(Target, Range("A1")) Is Nothing Then Exit Sub のTarget, Rangeを書き換えて複数このマクロを書き込んだのですがうまく動作しなくて。 知恵を貸していただけると助かります。

  • 点在するセルを、ダブルクリックで変更したいのです。

    シート上に多数点在するセルを、ダブルクリックで変更したいのです。 下記の通り、数ヶ所のセルだと思い通りにセルが変更されるのですが 30か。。。40個目辺りのセルを追加して行くと突然動かなくなってしまいます。 Range(・・・・・・・) ←この中 物には限界があるのかな?と思いつつ、質問致します。 120セル位で動作させたいのですが、良いお知恵をお貸し下さいませ。 皆様宜しくお願い致します。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A1,C1,F1,A3,C3,F3,A6,C6,E6," _ & "A8,C8,E8,A10,C10,F10,A12,C12,F12," _ & "A14,C14,F14,A17,D17,F17,A19,C19,F19")) Is Nothing = False Then Cancel = True If Target.Value = ChrW(10003) Then Target.ClearContents Else Target.Value = ChrW(10003) End If End If End Sub

  • excel マクロでの特殊文字入力方法

    マクロで特殊文字入力は出来ないのでしょうか? やりたい内容は、セルをダブルクリックした時に✓を表示させたいのです。 セルをダブルクリックした時に○を表示するマクロが、下記の通りである時、 ○の代わりに✓を表示させたいのですが、VBAで○の所に✓で書き換えると ?と表示されてしまいます。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Value = "○" Then .Value = "" Else .Value = "○" End If End With End Sub

  • エクセル ダブルクリック マクロについてご教授下さい

    よろしくお願い致します。 すみません、マクロの超初心者です。 見よう見まねで組んでみたのですが、セルが選択されるばかりでさっぱり動きません。 同じような処理で多数のパターンを覚えたいのですが、お教え頂けますでしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("d1:d999")) Is Nothing Then Exit Sub With Selection.Interior If ActiveCell = "" Then .Value = "有" ElseIf .Value Like "有*" Then .Value = "無" Else Cancel = True End If End With End Sub やりたい処理は、セルをダブルクリックするごとに該当文字が順に出たのち、また空白に戻る、というものです。 恥ずかしいのですが、すべてコピペしたので、どこがどう間違っているのかもご指摘頂けると幸いです。 不勉強で申し訳ございません。お助け下さい。 よろしくお願い致します。

  • どこが間違ってますか? (エクセルVBAです)

    質問をご覧くださりありがとうございます。 どなたか助けていただけないでしょうか。 以下のコードの場合、B2セルをダブルクリックすればシート(1)が開くと思っていたのですが、B2以外のセルをダブルクリックしてもシート(1)が開いてしまいます。 どこが悪いのでしょうか。 詳しい方がいらっしゃいましたら、どうか教えてください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean) If Target = Range("B2") Then cancel = True Worksheets("シート(1)").Activate End If End Sub どうか、宜しくお願いいたします。

  • Excel VBAについて

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, cancel As Boolean) If Intersect(Target, Range("F:F")) Is Nothing Then Exit Sub Application.Goto Worksheets("人件費").Range("A1") Worksheets("人件費").Cells(Rows.Count, "A").End(xlUp).Offset(1).Value = Target.Offset(, -5).Value cancel = True End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, cancel As Boolean) If Intersect(Target, Range("G:G")) Is Nothing Then Exit Sub Application.Goto Worksheets("外注費").Range("A1") Worksheets("外注費").Cells(Rows.Count, "A").End(xlUp).Offset(1).Value = Target.Offset(, -5).Value cancel = True End Sub 上の指令はFの列をダブルクリックすると人件費のシートが開いてAある値を人件費の新しいセルのAに代入する指令ですが それをG列ダブルクリックで外注費シートに同じようにやろうと思いましたが出来ません。 たぶん根本的に書き方が間違っているのかと思われますが、ご指導のほどお願いします。

専門家に質問してみよう