http://q.hatena.ne.jp/1207032723

入力が終了したら、自動的に何かの動作をさせる、、、イベントかな?

 入力終了 イベント Excel で、検索すると。。。

 http://www.happy500z.com/YNxv995.html の、C案の所に、

セルが変更されたときに実行されるイベントマクロってのがありますね。

 Worksheet_Changeってのでよさげです。

Visual Basic Editorを開いて、コードを記述する欄の上のところに、

  

215-01.jpg
 
  
  

ってなってるところの、(General)を開くとWorkSheetってのが出るのでそれを選択して、次にその右が SelectionChange って出てるのをChangeってのに変えれば、

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

と出ます。

このサブルーチンが、ワークシートの内容が変わったときに発生するイベントのようです。

Targetってのが、たぶん、どこが変わったか?を表しているようです。

 さっきのサイトによると、変更された列はTarget.Columnで取得できそうです。 ということで。

Private Sub Worksheet_Change(ByVal Target As Range)
         Debug.Print(Target.Column)
End Sub

として、Excelのファイルを編集してみます。 A列からD列まで、値を入れてみると、

 215-02.jpg

 (^^)入力するたびに、イミディエイトウィンドウに値を入れた列の列番号が表示されました。

ということで、この値を使って判断すればよさげですね。

質問者さんは「BWの列の入力が終わったら、次の行のJの列にカーソルを移動させたい」って事なので、

まず、BWの列を編集したときのTargetのColumnの値を調べます。

215-03.jpg

 

75列目、ですね。

ということで、75列目が編集されたらJ列に移動すればよい、と。

移動するには、セルを指定してそこをSelectすればよいと思うので、

ActiveSheet.Cells(行,列).Select でいいかな? 

行は今編集された行の次の行、だから、Target.Rowを1つ増やした値でいいと。

列は、、J列がいくつになるか?

 215-04.jpg

 

10ですね。ということで。

Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Column = 75 Then
             ActiveSheet.Cells(Target.Row + 1, 10).Select
     End If
End Sub

でいいかな?

 215-05.jpg

BWで値を入れると・・・

 215-06.jpg

ん、次の行のJ列にきました(^^)

これでおっけいかな? ここに置いておきます→vbastudy_19.xls

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2011 simple blog いろいろ勉強中 Suffusion theme by Sayontan Sinha