[[20070725142832]] 『セルを変えた時に実行するVBA』(ツバサ) ページの最後に飛ぶ

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

 

『セルを変えた時に実行するVBA』(ツバサ)
 セルE4を変えた時に実行する下記のようなVBAがあります。
 (自分で考えたVBAでないしVBAをあまり知らないので理解できていません)

 セルE2に変えた時に実行するVBAも一緒に同シート内で作れますか?
 教えて下さい!

Option Explicit

'[E4のセルを変えた時に実行するVBA]**************************************************************

 Private Sub Worksheet_Change(ByVal Target As Range)

    Sheets("検索用").Select
    Range("E4:G5").Select

    If Target.Count > 1 Then Exit Sub
    If Target.Address(5, 4) <> "E4" Then Exit Sub

    Application.EnableEvents = False

    Range("E2:G5").Select
    Selection.ClearContents
    Range("J2:J3").Select
    Selection.ClearContents
    Range("C8:E10").Select
    Selection.ClearContents
    Range("G8:G9,H10:J10").Select
    Range("H10").Activate
    Selection.ClearContents
    Range("L8:L10,N8:N9").Select
    Range("N8").Activate
    Selection.ClearContents
    Range("C13:D17,F13:G13,I13:J17,M13:N16").Select
    Range("M13").Activate
    Selection.ClearContents
    Range("B20:G29,I20:N29").Select
    Range("I20").Activate
    Selection.ClearContents

    Range("C8").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,1,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,3,FALSE)))"
    Range("C9").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,2,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,4,FALSE)))"
    Range("C10").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,3,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,5,FALSE)))"
    Range("G8").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,21,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,23,FALSE)))"
    Range("G9").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,23,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,25,FALSE)))"
    Range("H10").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C28,26,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C28,28,FALSE)))"
    Range("L8").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,4,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,6,FALSE)))"
    Range("L9").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,5,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,7,FALSE)))"
    Range("L10").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,6,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,8,FALSE)))"
    Range("N8").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,8,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,10,FALSE)))"
    Range("N9").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,21,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,23,FALSE)))"
    Range("C13").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,29,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,31,FALSE)))"
    Range("C14").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,30,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,32,FALSE)))"
    Range("C15").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,31,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,33,FALSE)))"
    Range("C16").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,32,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,34,FALSE)))"
    Range("C17").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,33,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,35,FALSE)))"
    Range("F13").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,28,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,30,FALSE)))"
    Range("I13").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,38,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,40,FALSE)))"
    Range("I14").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,39,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,41,FALSE)))"
    Range("I15").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,40,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,42,FALSE)))"
    Range("I16").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,41,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,43,FALSE)))"
    Range("I17").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,42,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,44,FALSE)))"
    Range("M13").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,45,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,47,FALSE)))"
    Range("M14").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,46,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,48,FALSE)))"
    Range("M15").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,47,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,49,FALSE)))"
    Range("M16").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,48,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,50,FALSE)))"
    Range("B20").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,10,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,12,FALSE)))"
    Range("B21").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,11,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,13,FALSE)))"
    Range("B22").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,12,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,14,FALSE)))"
    Range("B23").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,13,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,15,FALSE)))"
    Range("B24").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,14,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,16,FALSE)))"
    Range("B25").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,15,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,17,FALSE)))"
    Range("B26").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,16,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,18,FALSE)))"
    Range("B27").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,17,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,19,FALSE)))"
    Range("B28").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,18,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,20,FALSE)))"
    Range("B29").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C25,19,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C25,21,FALSE)))"
    Range("I20").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,50,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,52,FALSE)))"
    Range("I21").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,51,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,53,FALSE)))"
    Range("I22").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,52,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,54,FALSE)))"
    Range("I23").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,53,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,55,FALSE)))"
    Range("I24").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,54,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,56,FALSE)))"
    Range("I25").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,55,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,57,FALSE)))"
    Range("I26").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,56,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,58,FALSE)))"
    Range("I27").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,57,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,59,FALSE)))"
    Range("I28").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,58,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,60,FALSE)))"
    Range("I29").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R4C5="""","""",IF(R2C10="""",VLOOKUP(R4C5,リスト一覧!C3:C61,59,FALSE),VLOOKUP(R4C5&R2C10,リスト一覧!C1:C61,61,FALSE)))"
    Range("E4").Select

End Sub

 ※XP EXCEL2000
 (ツバサ)

 このコードは思ったとおりに機能していますか?

 1) Address(5,4) の意味がわかりません。
 2) Sheets("検索用")とは、このコードが書かれているシートではないのですか?
 3) Range("C8:E8").Select から以下の行はActiveCellだから最初のセルだけに
    に適用されていると思いますが?

 とにかく、このように長いコードを何の説明もなく提示するよりも、きちんと
 何をどうしたいのかを説明した方がレスを付けやすいですよ?
 (seiya)


 1)は多分 Cells(5, 4).Address(0, 0) の意味かと。。。
 3)は多分、Mergeされているものと。。。
 (ROUGE)

 Cells(5,4).Address(0,0)<> "E5" だと常にFalseになりますよね?
 さっぱりわからない...
 (seiya)


 本体部分の延々と続くコードの中身は見てませんが、

 > セルE4を変えた時に実行する下記のようなVBAがあります。
 > セルE2に変えた時に実行するVBAも一緒に同シート内で作れますか?

 ここだけ

    If Target.Address(5, 4) <> "E4" Then Exit Sub

    If Target.Address(0, 0) <> "E4" Then Exit Sub

 だとして、ここを

    If Target.Address(0, 0) <> "E4" AND Target.Address(0, 0) <> "E2" Then Exit Sub

 とすればよさそうです。けれど、

 > (自分で考えたVBAでないしVBAをあまり知らないので理解できていません)

 の状況では後がうまくいくか心配です。


 そのほかに、VLOOKUPの検索値として用いられている部分にTarget.Addressを入れ込む必要がありますね。
 でも、せっかくチェンジイベントを使うのであれば、数式を代入するのではなく、もっと良い方法があるような気がします。。。
 (ROUGE)

 seiyaさん
 ROUGEさん

 コメントすみません。
  1) Address(5,4)  → Address(0,0) でした。
 2) Sheets("検索用") → 消しました。
  3) 理解できませんでした。

VBAを組んだ内容

  Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Count > 1 Then Exit Sub
    If Target.Address(0, 0) <> "E4" Then Exit Sub

    Application.EnableEvents = False

 というVBAがあったので、行ないたい処理(Rengeのクリアーと関数)を
 マクロで登録して貼り付けて完成させました。
 実際に行ないたい処理は、E2に文字を入力したときにRengeのクリアーと関数の入力、
 E4に文字を入力したときはRengeのクリアーと違う関数の入力です。
 E2とE4で関数を変えたいのです。
 ROUGEさんのおっしゃる通り、違う良いやり方があるのでしょうね。
 ズラズラと長い文でうまく問いかけできなくてすみません。
 できれば続けてご説明お願い致します。 (ツバサ)


 数式の入る範囲は「結合」されているのですか?
 (seiya)

 seiyaさん
 E2とE4は結合していますが、数式の入るセルは結合していません。
 (ツバサ)

 えっ?
 E2/E4はどのように結合されているのですか?

 >E2とE4に文字を入力したとき....
  「文字」とはどのような文字ですか?
 (seiya)

 ごめんなさい。E2はE2:G3 E4はE4:G5 と別々で結合しています。
 文字は下記のようなものです。
 [例] 英数10桁のもの Z111111A11 ZZZ2222A22 ZZZZ333A33
       英数11桁のもの ZZZ4444A444 ZZZZ555A555
       全て半角の英数です。
 (ツバサ)

 それ以外(10−11桁の文字以外)の時は無視ですか?

 数式を入力する範囲が C8:E8 になっていて、ActiveCell にだけ数式を
 挿入していますが C8にだけ数式を挿入するということですか?
 とにかく、提示されたコードから推測するのはとても無理です。
 詳しく(範囲を含めて)説明した方がわかりやすいです。
 (seiya)

 (1) 10−11桁以外のときは無視でよいです。
 (2) C8にだけ数式を挿入するということです。
 (3) 範囲を見直しました。

 最初の式はE4に文字を入力した場合に指定したセルのクリアー、関数設定を
 するように考えたのですが、
 本当はE2に入力したときには、この関数・・・ E4に入力した場合は、この関数・・・
 と、2通りのことを実行したいのです。
 説明下手ですみません。宜しくお願い致します。
 (ツバサ)


 Priavte Sub Worksheet_Change(ByVal Target As Range)
 With Target.Cells(1,1)
      If ((.Address(0,0) = "E2") + (.Address(0,0) = "E4")) * ((Len(.Value) = 10) + (Len(.Value) = 11)) Then
           Application.EnableEvents = False
           'ここに範囲をクリアするコード
           If .Address(0,0) = "E2" Then
               'ここに E2 に変化があった場合のコード
           ElseIf .Address = "E4" Then
               'ここに E4 に変化があった場合のコード
           EndIf
           Application.EnableEvents = True
      End If
 End With
 こんな感じになると思います。
 (seiya)


 seiyaさん
 早急に回答ありがとうございます。
 早速試してみます。少し時間がかかると思いますが・・・結果報告します。
 (ツバサ)

 実行してみました。
 実行時エラー424
 オブジェクトが必要です。とエラメッセージが出て
 4行目の Applicatiion.EnableEvents = False で止まります。

 なぜでしょうか?(ツバサ)

 タイプミスです i が一つ多いですね

 Application.EnableEvents = False

 です。
 (seiya)

 下記の式をつくりテストランしてみました。
 E2に入力したときはF9とF11はクリアされG9に「猿」G11に「猫」が入力されましたが、
 E4に入力したときは、F9とF11のクリアはされましたが、G9に「サル」、G11に「ネコ」は
 入力されませんでした。
 何がいけないのでしょうか?

 Private Sub Worksheet_Change(ByVal Target As Range)

  With Target.Cells(1, 1)
       If ((.Address(0, 0) = "E2") + (.Address(0, 0) = "E4")) * ((Len(.Value) = 10) + (Len(.Value) = 11)) Then
            Application.EnableEvents = False
            'ここに範囲をクリアするコード
     Range("F9,F11").Select
     Range("F11").Activate
     Selection.ClearContents

            If .Address(0, 0) = "E2" Then
                'ここに E2 に変化があった場合のコード
     Range("G9").Select
     ActiveCell.FormulaR1C1 = "猿"
     ActiveCell.Characters(1, 1).PhoneticCharacters = "サル"
     Range("G11").Select
     ActiveCell.FormulaR1C1 = "猫"
     ActiveCell.Characters(1, 1).PhoneticCharacters = "ネコ"
     Range("G12").Select

            ElseIf .Address = "E4" Then
                'ここに E4 に変化があった場合のコード
     Range("G9").Select
     ActiveCell.FormulaR1C1 = "サル"
     Range("G11").Select
     ActiveCell.FormulaR1C1 = "ネコ"
     Range("G12").Select

            End If
            Application.EnableEvents = True
       End If
  End With
 End Sub
(ツバサ)

 "サル" "ネコ" を表示させたいのですか?
 "猿", "猫" を表示させたいのですか?
 "猿", "猫" に振り仮名をつけて表示させたいのですか?
 (seiya)

  文字列での比較をしているので Address と Address(0,0) は意味が異なりますよ。
 (Mook)


 おっと、見逃していました。
 Mookさんのご指摘どおりですね。

 ElseIf .Address(0,0) = "E4" Then

 ですね
 (seiya)

 あっと、失礼。
 全体の流れを見ていませんでしたので、ツバサ さんのコードかと思って発言しましたが、
 元は seiya さんのサンプルコードでしたか。

 釈迦に説法でした。
 (Mook)


 いえいえ、このようなヘマは私の専売特許のようなものですので...
 いつも皆さんにお手数おかけしてます。
 (seiya)

 seiyaさん
 Mookさん
 コメントありがとうございます。サンプルでOKでした。
 実際のデータで試してみます。
 (ツバサ)

 実際のデータでテストランしました。
 バッチリできました。ありがとうございます。
 でも・・・今更ですみません・・・今気付いたのですが、実際のデータで条件が違うのがありました。
 E2は数字のみ5桁でした。E4は10桁と11桁です。式修正で対応できますか?
 今になって本当にすみません。
 (ツバサ)

 現在使用中のコードを提示してください。
 (seiya)

 コード下記します。

 Private Sub Worksheet_Change(ByVal Target As Range)

  With Target.Cells(1, 1)
       If ((.Address(0, 0) = "E2") * ((Len(.Value) = 10) + (Len(.Value) = 11))) + _
          ((.Address(0,0) = "E4") * (IsNumeric(.Value)) * Len(CStr(.Value))=5)Then
            Application.EnableEvents = False

         'ここに範囲をクリアするコード

            If .Address(0, 0) = "E2" Then

         'ここに E2 に変化があった場合のコード

                 Range("E4:G5,J2:J3").ClearContents
                 Range("C8").FormulaR1C1 = _
                  "=IF(R2C5="""","""",VLOOKUP(R2C5,直材マスターデータ!C5:C27,23,FALSE))"
 〜〜〜省略〜〜〜 

             ElseIf .Address(0, 0) = "E4" Then

         'ここに E4 に変化があった場合のコード

                 Range("E2:G3,J2:J3").ClearContents
                 Range("C8").FormulaR1C1 = "=IF(R4C5="""","""",R4C5)"
 〜〜〜省略〜〜〜

            End If
            Application.EnableEvents = True
       End If
  End With
 End Sub
 (ツバサ)

 勝手にコードを書き換えてしまいましたが、どうでしょう?
 (seiya)


 コンパイルエラー
 構文エラーと表示されます。
 If ((.Address(0, 0) = "E2") * ((Len(.Value) = 10) + (Len(.Value) = 11))) + _
    ((.Address(0,0) = "E4") * (IsNumeric(.Value)) * Len(CStr(.Value))=5))Then
 この2行がすべて赤文字です。
 (ツバサ)

 ")" が一つ余計だったかも...
 コード変更しましたので、確認してください。
 (seiya)

了解しました
 チョット会議なので離れます。
 (ツバサ)

 週またぎですみません。
 seiyaさん コード変更で望みどおりのVBAが完成できました。
 長々とお付き合いありがとうございました。
 深く感謝致します。今回はこれで失礼致します。
 (ツバサ)

コメント返信:

[ 一覧(最新更新順) ]


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