[[20100517190949]] 『changeイベントを2つ記述したい時はどうすればい』(VBA初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『changeイベントを2つ記述したい時はどうすればいいですか?』(VBA初心者)

 よろしくお願いします。
 1つ1つ単体でしたら正常に動作するのですが、changeイベントのコードを2つをくっつけると動きません。
 どういう風に記述すればいいでしょうか?よろしくお願いします。

 >動きません。
 ではわかりません。
 が、一例として、Exit Subしてしまっている。
 (alt)

ait様

記述方法がわからないかったので、下記のように、二つくっつけて書いてみましたが、『名前が適切ではありません』とでて動作しません。

どのように記述すればよろしいでしょか?

Private Sub Worksheet_Change(ByVal Target As Range)

 実行文

 end sub

__________

 Private Sub Worksheet_Change(ByVal Target As Range)
 実行文

 end sub

________
よろしくお願いします。(vba初心者)


 Private Sub Worksheet_Change(ByVal Target As Range)
   実行文
   実行文
 end sub
 Worksheet_Changeは1つ。
 (alt)


aitさま

 今、上記のように修正してみたのですが、エラーはでなくなったのですが、
 何の動作もしなくなってしまいました。
 単体では、しっかり動くことを確認しておるので、他に何かくっつける際に文法的なものがあるのでしょうか?
 対処法がおわかりでしたら、教えて下さい。よろしくお願いします。(VBA初心者)

 コードを提示してみてはいかがでしょう?
 
 こちらの方かな?
[[20100517161710]] 『changeイベントで書式を復活』(VBA初心者)
[[20100510114549]] 『選択されたら数式復活』(VBA初心者)
 
 (キリキ)(〃⌒o⌒)b 

キリキ様

 ありがとうございます。
 はい。以前、こちらで教えていただいた、コードの2つをくっつけたいのですが、うまく動きません。
 コードは下記に記載します。よろしくお願いします。(vba初心者)

 Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Count > 1 Then Exit Sub
If Application.Intersect(Target, Me.Range("A6:A36")) Is Nothing Then Exit Sub

   Target.Offset(, 1).FormulaR1C1 = "=IF(RC[-1]="""","""",VLOOKUP(R[2]C[5],R36C44:R42C46,2,FALSE))"
  Target.Offset(, 3).FormulaR1C1 = "=IF(RC[-3]="""","""",VLOOKUP(R[2]C[3],R36C44:R42C46,3,FALSE))"

        If Intersect(Range("A41:B50"), Target) Is Nothing Then Exit Sub
    Range("C41:D50").NumberFormatLocal = "G/標準"
 End Sub


 お二人のコードを変えるわけにはいかないので、ちょこっとだけ弄りましたb
 
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Application.Intersect(Target, Me.Range("A6:A36")) Is Nothing Then
        Target.Offset(, 1).FormulaR1C1 = "=IF(RC[-1]="""","""",VLOOKUP(R[2]C[5],R36C44:R42C46,2,FALSE))"
        Target.Offset(, 3).FormulaR1C1 = "=IF(RC[-3]="""","""",VLOOKUP(R[2]C[3],R36C44:R42C46,3,FALSE))"
    End If
    If Intersect(Range("A41:B50"), Target) Is Nothing Then Exit Sub
    Range("C41:D50").NumberFormatLocal = "G/標準"
End Sub
 
 原因としては「Exit Sub」で、処理から脱出しちゃってますから、処理出来ていなかったって事ですね^^
 詳しくは「Exit Sub」のヘルプを見てくださいな〜♪
 
 (キリキ)(〃⌒o⌒)b 


キリキ様

 助かりました。ありがとうございました。しっかり動作しました。Exit Subについて、調べてみたいと思います(vba初心者)


キリキ様

教えていただいた、コードを記述するシートは保護がかかっておるので、一時的に解除して上記のマクロを実行し、おわったら、再度保護をかけたいのですが、

 どこにコードをどのように記述するか教えていただくことはできませんでしょうか?
 保護の方法は、調べて下記でできると書いてあったのですが、どこに記述していいかわからず、いろいろ記述してみたのですが、思ったような
 動作をしてもらえないので、ぜひ教えていただけませんでしょうか?よろしくお願いします。(VBA初心者)

 ActiveSheet.Unprotect Password:="12345"
 ActiveSheet.Protect Password:="12345"

 ごめんなさいね。。。
 
[[20100518110405]] 『changeイベントについて』(VBA初心者)
 σ(^o^;)も、こちらでのmomoさんと同じ意見なんですよね〜
 
 あとは、こちらでも、みやほりんさんがおっしゃっていますが
[[20100513233352]] 『VBAでのファイルを更新(閉じる)したい』(はせぴぃ)
>私の経験では、便利にしてあげればあげるほど、素人のままでいてくれます。
 
 これも、もっともだと思いますb
 今後、また問題が出たときに、すぐに対応できるだけのスキルを身につけるか。
 または、表の仕様そのものの変更を考えるか。
 
 今の内に考えておかないと、大変なことになりそうです。。。
 
 (キリキ)(〃⌒o⌒)b 


キリキ様

 ありがとうございました。
 下記のようなコードにしたら、何とかうごきました。アドバイスありがとうございます(VBA初心者)

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Application.Intersect(Target, Me.Range("A6:A36")) Is Nothing Then
        Target.Offset(, 1).FormulaR1C1 = "=IF(RC[-1]="""","""",VLOOKUP(R[2]C[5],R36C44:R42C46,2,FALSE))"
        Target.Offset(, 3).FormulaR1C1 = "=IF(RC[-3]="""","""",VLOOKUP(R[2]C[3],R36C44:R42C46,3,FALSE))"
    End If
ActiveSheet.Unprotect Password:="12345"
    If Intersect(Range("A41:B50"), Target) Is Nothing Then Exit Sub
    Range("C41:D50").NumberFormatLocal = "G/標準"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.