単二電池

 
 顧客データーを並べ替えるマクロを組んでいます。
 顧客データは、10行目以降です。
 この10行目以降のセルがアクティブになっていなければ、「並べ替えマクロ」が実行されないようにしようと思っています。

 代わりに次のようなメッセージ
 「MsgBox "顧客情報、データ内のどこかをクリックして下さい", vbCritical」
 …と表示させようと思っています。

 以前、質問をしたところ、次のようなアドバイス(シートモジュール)を頂きました。
 
*************************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row < 10 Then
MsgBox "顧客情報、データ内のどこかをクリックして下さい", vbCritical
End If
End Sub
*************************************

…これは、見事に機能したのですが、
これですと、マクロの実行不実行に関わらず、
「9行目より上のセルがクリックされたら」…無条件でメッセージボックスが表示されてしまいます。

そこで、
次のような分岐を作成したいのです。

【9行目以上のセルがアクティブな場合】
 →メッセージボックスが表示され、アクティブセルを10行目以降のどこかにするように促され、マクロ終わり。

【10行目以下のセルがアクティブ】
 →並べ替えマクロの実行

 並べ替えマクロはできていますが、
 この上の分岐の部分がまだできません。

 これについてのアドバイスをお願いできればと思います。

 どうぞ、よろしくお願いいたします。 

A 回答 (4件)

何をやってるのか理解してください。

応用以前の問題です。


sub すでに出来上がったマクロ()

 if activecell.row < 10 then
  msgbox "エリア内を選択すること"
  exit sub
 end if

’ if その他の並べ替え実行条件が成立していなければ
’  msgbox "実行条件が成立していない"
’  exit sub
’ end if


 msgbox "並べ替え GO"

end sub
    • good
    • 0
この回答へのお礼

 すみません。初心者なもので・・・。
 お陰様で、しかし、解決しました。
 ご回答、どうもありがとうございました! 

お礼日時:2012/08/20 14:37

ご相談は


>そこで、次のような分岐を作成したいのです。

という事ですが、お話の流れからいうと

private sub worksheet_change(byval Target as excel.range)

 if 並べ替え実行条件成立していなければ
 ’スルー
  exit sub
 end if

 if activecell.row < 10 then
  msgbox "エリア内を選択すること"
  exit sub
 end if

 msgbox "並べ替え GO"

end sub

という具合ではありませんか?
    • good
    • 0
この回答へのお礼

ご回答、どうもありがとうございました!

お礼日時:2012/08/20 14:37

単に趣味の問題ですが、ワタシ的には



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If activecell.Row < 10 Then
  MsgBox "顧客情報、データ内のどこかをクリックして下さい", vbCritical
  exit sub
 End If
 msgbox "並べ替え GO"
End Sub

とします。




フローで言えば
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Row < 10 Then
  MsgBox "顧客情報、データ内のどこかをクリックして下さい", vbCritical
 else
  msgbox "並べ替え GO"
 End If
End Sub

でいいです。

この回答への補足

 早速のご回答をありがとうございます。
 それで…すみません、一つ説明不足でした。
 
 以前、同様なシートモジュールを教えていただいたのですが、
 それを「すでに出来上がったマクロ」の上にはりつけたところ、駄目でした。
 
 「並べ替え」のマクロボタンを押してからの分岐にしたいので、
 できれば、シートモジュールではなく、
 
 すでに出来上がっている「並べ替えマクロ」の上部に 挿入する形のものを教えていただければありがたいです…。
 
 どうぞ、よろしくお願いいたします!
 
 

補足日時:2012/08/18 13:55
    • good
    • 0
この回答へのお礼

ご回答、どうもありがとうございました!

お礼日時:2012/08/20 14:37

こんにちは!



>並べ替えマクロはできていますが・・・

というコトなので、

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row < 10 Then
MsgBox "顧客情報、データ内のどこかをクリックして下さい", vbCritical
Exit Sub
Else
'並び替えのマクロ
End If
End Sub

といった感じではどうでしょうか?m(_ _)m

この回答への補足

 早速のご回答をありがとうございます。
 それで…すみません、一つ説明不足でした。
 
 以前、同様なシートモジュールを教えていただいたのですが、
 それを「すでに出来上がったマクロ」の上にはりつけたところ、駄目でした。
 
 「並べ替え」のマクロボタンを押してからの分岐にしたいので、
 できれば、シートモジュールではなく、
 
 すでに出来上がっている「並べ替えマクロ」の上部に 挿入する形のものを教えていただければありがたいです…。
 
 どうぞ、よろしくお願いいたします!
 
 

補足日時:2012/08/18 13:55
    • good
    • 0
この回答へのお礼

 どうも、ありがとうございました。
 お陰様で、解決いたしました!  

お礼日時:2012/08/20 14:37

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