[[20070815233805]] 『変更前の値の取得(マクロ)』(今日も夜勤) ページの最後に飛ぶ

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

 

『変更前の値の取得(マクロ)』(今日も夜勤)

 値を変更した時、変更前の値を取得するにはどうすれば良いんでしょうか。

 具体的には
  1.セルA1に数字を入力
  2.セルA2から、A1に入力した値の行数の範囲に名前を定義する(マクロで)
   (例:A1に10と入力すると、A2:A11の範囲に「範囲10」という名前を定義する)
  3.INDIRECT関数でその範囲の値を読む
 ということをやっています。

 A1には時々値を入力しなおすんですが、
 新しい値を入力すれば前の範囲に定義した名前は削除したいです。

 マクロの記録を試してみたところ
  ActiveWorkbook.Names("範囲" & i).Delete   'iはセルA1の変更前の値
 とすればできそうなんですが、i(A1の変更前の値)の取得方法が分かりません。

 どなたかよろしくお願いします。


 こんなので、事足りますか?
 
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, n As Integer
    With Target
        If .Count > 1 Then Exit Sub
        If .Address(0, 0) <> "A1" Then Exit Sub
        n = .Value
        Application.EnableEvents = False
        Application.Undo
        i = .Value
        On Error Resume Next
        ActiveWorkbook.Names("範囲" & i).Delete
        ActiveWorkbook.Names.Add Name:="範囲" & n, RefersToLocal:="=A2:A" & n + 1
        .Value = n
        Application.EnableEvents = True
    End With
End Sub
 
 (キリキ)(〃⌒o⌒)b

 キリキさん
 Application.Undo
 知りませんでした。すごく助かりました。
 では、がんばって完成させちゃいます。
 ありがとうございました。
 (今日も夜勤)

コメント返信:

[ 一覧(最新更新順) ]


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