プロが教える店舗&オフィスのセキュリティ対策術

Private Sub Worksheet_Change(ByVal Target As Range)
Worksheet_Change_1 Target '1つ目のWorksheet_Change処理
Worksheet_Change_2 Target '2つ目のWorksheet_Change処理
End Sub

For a = 3 To 10
If Cells(a, 22).Value <> "" And Right(Cells(a, 22).Value, 2) <> " 様" Then Cells(a, 22).Value = Cells(a, 22) & " 様"
Next

If Cells(5, 14) = "山田太郎 様" Then '
With Cells(5, 14).Characters(Start:=3, Length:=2).Font
.Size = 1
.ColorIndex = 2
End With
End If

Private Sub Worksheet_Change(ByVal Target As Range)
For a = 1 To 7
For b = 8 To 14
If Cells(a, 7) <> "" Then Range(Cells(a * 10 - 9, 1), Cells(a * 10, 3)).BorderAround Weight:=xlHairline
If Cells(b, 7) <> "" Then Range(Cells(b * 10 - 79, 4), Cells(b * 10 - 70, 6)).BorderAround Weight:=xlHairline
Next
Next
End Sub

このプロシージャは何を意味しますか?

A 回答 (2件)

①と③はどこかのシートモジュールに書かれたコードかと思いますが、②は「Sub ~」や「Function ~」が無いので意味を成さないかと思います。


またどこかに「Function Worksheet_Change_1(○○ As Range)」などのユーザー定義関数が有ると思いますのでそちらが無いとまったくわかりません。
「エクセル vba プロシージャ 1981」の回答画像1
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございました!!

お礼日時:2017/04/14 10:13

こんにちは。



>このプロシージャは何を意味しますか?
本質的に、イベント・ドリブン型というマクロにはふさわしくないようなコードだと思います。Target As Range のイベント・ドリブンがまったく生きていません。
まず、基本的なVBAを学ぶ必要があると思います。そうでなければ、回答者さんたちにおまかせするしかありません。

>Worksheet_Change_1 Target '1つ目のWorksheet_Change処理
>Worksheet_Change_2 Target '2つ目のWorksheet_Change処理
基本的には、シートモジュールにChangeイベントはひとつしか使えません。
複数を設けるのは、非常に高度なわざなのです。

それと、何をしたいのか・するか、という使用者の考えが優先するのではないでしょうか。コードが先にあって、それをどう解釈するかというのは、本末転倒だと思います。

コードの中で、
Private Sub Worksheet_Change(ByVal Target As Range)
使えません。仮に動いても、入力するたびに、マクロコードがあちこち動き回ったのでは、仕事にはならないはずです。

たぶん、イベント・ドリブン型のマクロを見よう見まねで、あれもしたい・これもしたいと、思いつきで、コードを重ねたものだと思います。

まず、マクロでどういう作業をしようとしているのかではないでしょうか。
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございました!!

お礼日時:2017/04/14 10:13

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