こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル VBAマクロ if文 はどうすれば?

先ほど質問したのですが、さらにわからなくなったのでお願いします
先ほどの質問
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
http://okwave.jp/qa/q7236338.html
>変数と式の両立は難しいでしょうからどうすればよいのでしょう?
 ⇒関数では出来無いのはエクセルの常識ですのでマクロ(VBA)組込みになります。

一例です。
対象シートタブ上で右クリック→コードの表示→以下のコード貼り付けてA1に枚数を入力して
お試しください。

サンプルコード
Private Sub Worksheet_Change(ByVal Target As Range)
単価 = 5
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 0 Then
 Application.EnableEvents = False
 Target.Value = Target.Value * 単価
 Application.EnableEvents = True
End If
End Sub
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
↓変更&応用したのですが、、、、


EX:(セル)  
 セル番号  用紙種類1~3       用紙種類
   C12   A3モノクロ1     D12  A3カラー1
   C13   A3モノクロ2     D13  A3カラー2
   C14   A3モノクロ3     D14  A3カラー3
※金額の違いは、モノクロとカラーの値段が違うだけ
 1~3は金額的な違いはない
とあった場合、

ためしに先ほどのを応用して用いたのですが
変更点は、用紙サイズ、カラーの有無による金額
       出力先セルの番号
Private Sub Worksheet_Change(ByVal Target As Range)

Private Sub A4_mono_1(ByVal Target As Range)
Private Sub A4_mono_2(ByVal Target As Range)
・ 
           ・
           ・
と変更したのですがうまく動作しなかったのですが、
どういった点が悪かったのでしょうか?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
最終的な質問↓


上記のものはVBAマクロ文は基本1つのみなので、if文で作らなくてはいけないということが分かったのですが、そこでさらに疑問が浮かびました、

Private Sub Worksheet_Change(ByVal Target As Range)
If or(target.columns = C12:C14) Then
単価1 = 7.6
If Intersect(Target, Range("C12:C14")) Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 0 Then
Application.EnableEvents = False
Target.Value = Target.Value * 単価1
Application.EnableEvents = True単価1 = 7.6
elseif or(target.columns = D12:D14) Then
単価2 = 30.6
If Intersect(Target, Range("D12:D14")) Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 0 Then
Application.EnableEvents = False
Target.Value = Target.Value * 単価2
Application.EnableEvents = True
End If
End Sub

としたっ場合全く式になっていません
どのようにすればよいのでしょう?

投稿日時 - 2012-01-11 00:58:34

QNo.7237536

すぐに回答ほしいです

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

private sub worksheet_change(byval Target as excel.range)
 dim h as range

’入力範囲の確認
 set target = application.intersect(target, range("C12:D14"))
 if target is nothing then exit sub

’同時に複数セルに操作した場合を考慮する
 for each h in target
  if h <> "" then    'isnumericを検査したければ追加する
   application.enableevents = false
   h = h * iif(h.column = 3, 7.6, 30.6)
   application.enableevents = true
  end if
 next
end sub
といった具合に。

投稿日時 - 2012-01-11 02:11:54

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-