先ほど質問したのですが、さらにわからなくなったのでお願いします
先ほどの質問
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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
としたっ場合全く式になっていません
どのようにすればよいのでしょう?
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
といった具合に。