【最大10000ポイント】当たる!!質問投稿キャンペーン!

例えば
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'***** 特定セルを選択するとイベントを実行する *****
Dim tate As Long
Dim yoko As Long
Dim 数量 As Long
Dim 判定 As Integer
tate = ActiveCell.Row
yoko = ActiveCell.Column
If yoko = 2 Then
On Error GoTo skip01
数量 = InputBox("数量を入力してください。")
判定 = MsgBox("数量 = " & 数量 & " で間違いありませんか?", vbYesNo + vbInformation)
If 判定 = vbYes Then
Cells(tate, 2) = Cells(tate, 2) + 数量
End If
End If
skip01:
End Sub
ですが、上記コードでは2行目のみの物になりますが、例えば7と8行目にしたいときなどはどうすればいいのでしょうか?素人質問ですが宜しくお願い致します。

A 回答 (4件)

こんにちは。



>Cells(tate, 2) = Cells(tate, 2) + 数量
>上記コードでは2行目のみの物になりますが
いいえ、B列のみです。

  Cells(行,列)
です。

7~8行目にするなら、
  If Not (Target.Row = 7 Or Target.Row = 8) Then Exit Sub
イベントの除外項目にします。列なら、プロパティは、.Column になります。

あまり、2バイト文字を変数に使う習慣は良くないのと、InputBox 関数は、なるべくInputBox メソッドにするほうがよいです。今回はそのままにしておきます。

今回は、変数:数量は、Variant 型にしてあります。
もし、先に、対象のセルに文字が入っている場合は、文字+数量で、文字型に変わります。

イベント・ドリブン型マクロでは、Target という引数をそのまま使用します。また、イベント・プロシージャーは、VBEditor で、WorksheetオブジェクトのSelectionChangeを選んだ時に、VBE自体が出力するものを使用します。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  '***** 特定の行と列を選択するとイベントを実行する *****
  Dim 数量 As Variant
  
  'ここで変更する
  '行
  If Not (Target.Row = 7 Or Target.Row = 8) Then Exit Sub
  '列(B列)
  If Not Target.Column = 2 Then Exit Sub
  
  数量 = InputBox("数量を入力してください。")
  If 数量 = "" Then Exit Sub
  
  If Not IsNumeric(数量) Then MsgBox "数字ではありません!", vbCritical: Exit Sub
  
  If MsgBox("数量 = " & 数量 & " で間違いありませんか?", vbYesNo + vbInformation) = vbYes Then
    Target.Value = Target.Value + 数量
  End If

End Sub
    • good
    • 0
この回答へのお礼

有難う御座います。Wendy02さんはどうやって習得されましたか?何か参考になる物があれば教えてください。よろしくお願いいたします。

お礼日時:2008/02/21 21:25

こんばんは。



>Wendy02さんはどうやって習得されましたか?何か参考になる物があれば教えてください。

入門時は、本から覚えるのが確実でした。

技術評論社の『かんたんプログラミング Excel VBA 』大村あつしさんの本に出会わなかったら、私は、VBAは身につかなかったと思います。だいたい、半年で一通りは覚えましたが、その後、掲示板でROMしながら、その後、掲示板で、回答する中で習得したものもあります。
    • good
    • 0

まちがえました。


Cells(tate, 2) = Cells(tate, 2) + 数量
 ↓
Cells(tate, yoko) = Cells(tate, yoko) + 数量
もですね。
    • good
    • 0
この回答へのお礼

有難う御座いました。

お礼日時:2008/02/21 21:23

If yoko = 2 Then


   ↓
If yoko = 7 or yoko = 8 Then
にする。
    • good
    • 0
この回答へのお礼

早速の御回答有難う御座います。もう一つお聞きしたいのですが、Cells(tate, 2) = Cells(tate, 2) + 数量の部分は2のままでいいのでしょうか?

お礼日時:2008/02/21 09:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング