• ベストアンサー

EXCEL97でも動くようにするには?

EXCEL2000を使用して Private Sub Worksheet_Change(ByVal Target As Range) を使用してセルの値が変更されたら動くマクロを作成しました。 セルには直接値を入力するものではなく、 セレクトボックスの中からひとつを選択するようになっています。 セレクトボックスから一つを選択するとマクロが動きます。 2000では、特に問題なく動いています。 これをEXCEL97で試してみると セレクトボックスから一つを選んだだけでは、 マクロが動きません。 たぶん、EXCEL97では セレクトボックスから選らんだ場合を、 Worksheet_Changeとは見なしていないのではないかと思うのですが、 どうすれば、EXCEL97でも マクロが実行されるようになるのでしょうか? (当然、セレクトボックスから選ぶだけですので、  onKey"enter" も使用できません。)

  • ssm3u
  • お礼率70% (42/60)

質問者が選んだベストアンサー

  • ベストアンサー
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

セレクトボックスというものは シートあるいはフォーム上に配置したコンボボックスやリストボックスのことなのか、あるいはオートコンプリートや入力規則などのことなのか、それともそれ以外の何かなのでしょうか。

ssm3u
質問者

補足

すいません。入力規則のリストのことです。 他、いろいろ試してみたのですが、 どうやらEXCEL97では リストの「元の値」にセル範囲指定ではなく、 直接値を区切って入力すれば、 選択時に WorkSheet_Change として拾えるようです。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

ふと思ったのですが、Changeイベントはセルの内容(値)が(文字通り)変らないと反応しない経験があります。 A1セルに「ABC」と入っていて、その上から「ABC」ENTERを入れても反応しなかったような。これとご質問が関係ないでしょうか。 「入力規則のリスト」であれば、当然セルとリンクしてるはずで、値のないセルで、リストから選択すれば、Change イベントが発生するはずです。97がなくて確認できないですが。95ぐらいから、Changeイベントはあったはずで 全般的に、97のころは完成形態になっていて、内容がお粗末だったとは考えにくい。 >リストの「元の値」にセル範囲指定ではなく、 直接値を区切って入力すれば、・・・ 選択時に WorkSheet_Change として拾えるようです。 素人の私がいうのもおかしいですが、怪しい(それが解決策ではない)感じがします。

ssm3u
質問者

お礼

かく私も 97のバグ(?)とは思えず、 どっかの書き方が悪いのだ! とずっと悩んでいたのですが。 とりあえずこれで解決できました。 ありがとうございました。

ssm3u
質問者

補足

私が回答するのもなんですが・・・ http://keep-on.com/excelyou/2001lng4/200103/01030048.txt このようなサイトを発見しました。

関連するQ&A

  • エクセルのマクロ

    セルの値が変わったら動くマクロですが、2つ書くとエラーが出ます。 どのように直したらいいでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address If Intersect(Target, Range("EK22")) Is Nothing Then Exit Sub Else Range("EK24:EM28").Select Selection.ClearContents End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("EK24")) Is Nothing Then Exit Sub Else Range("EK27:EM28").Select Selection.ClearContents End If End Sub

  • Excel VBA イベントプロシージャを2つ記述する(基本です)

    基本的な事なのですが、Excelのイベントプロシージャで2つプログラムを作るにはどうやって記述すればよいのでしょうか? 具体的には、worksheetのchangeイベントで、セルC5の値を変えた時と、セルG7の値を変えた時の2通りのマクロを作成したいのです。 Private Sub Worksheet_Change(ByVal Target As Range) C5を変えた時の処理 End Sub Private Sub Worksheet_Change(ByVal Target As Range) G7を変えた時の処理 End Sub このように書けばよいのでしょうか?そうするとTargetがかぶっておかしくなる気がします。。 お願いします。

  • エクセルマクロ(VBA)で指定したセルが変化したときに実行するには?

    VBAでsheetの中のworksheet_changeなどでマクロを書くと、そのシー トの中のどのセルを変化させてもマクロが実行されるのですが、これ を、A1とc1とc2が変化したときだけ処理を実行させたいのです。 以下のマクロのどこかを編集すると、そのようなことが出来るのでし ょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) ----実行する内容---- End Sub Private Sub Worksheet_Change(ByVal Target As Range) ----実行する内容---- End Sub

  • エクセルで任意の順番にて入力をしたいのですが・・・

    エクセルで任意の順番にて入力(テンキー使用でenterで移動)をしたいです。 自分で調べてやったのですがうまくできないので教えてください。 ctrlキー+セル選択で名前BOXに登録は、セルを40個ほどしか登録できない?でしょうか・・・? 全部で300個ほど有るのですが、ちまちまやっても40個くらいのところで先頭に戻ります。 何か他の設定がおかしいのでしょうか? マクロも簡単そうなやつ Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Range("D10").Select End If End Sub をやってみました。 今一解らず、 If Target.Address = "$A$1" Then Range("D10").Select End If のセルの位置を変えてやりましたが、こちらも数に制限があるのか 全部を登録して順番どうりに入力することができません。 数個分の枠で妙な位置に移動します・・・ 中の式を複数作ってやりました・・・ Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Range("D10").Select       ・       ・       ・ If Target.Address = "XXXX" Then Range("XXX").Select End If End Sub ($A$1とD10の値を変えたものを多数使用して・・・) 何か良い方法があれば教えてください。 よろしくお願いします。

  • エクセルVBAに関して

    VBAの知識があまりないので教えて頂きたいのですが、セルの内容が変更されたら マクロが実行される Private Sub Worksheet_Change(ByVal Target As Range) というのがあるかと思います。 セルに書かれた関数によって、セルの内容が変化したときにマクロが実行されるVBA関数はあるのでしょうか?

  • イベントマクロで「コンパイルエラー 因数は省略できません」

    マクロ初心者です イベントマクロを作りました Sheet2の結合されたB44:E44のセルに入力すると自動的にマクロが働いて Sheet1のW1の値のみがSheet2の結合されたB44:E44のセルに貼り付けられるマクロなのですが 実行すると「コンパイルエラー 因数は省略できません」と表示されます マクロ自体は正しく動いているのですがどういうことなんでしょう Sheet2 Worksheet Change Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target.Range("B44:E44")) Is Nothing Then Exit Sub Application.EnableEvents = False Sheets(1).Select Range("W1").Copy Sheets(2).Select Range("B44:E44").Select ActiveSheet.Paste Application.CutCopyMode = False Application.EnableEvents = True End Sub Private Sub Worksheet_Change(ByVal Target As Range)…この行が黄色になります If Intersect(Target.Range("B44:E44")) Is Nothing Then Exit Sub…intersectのところが青くなります こんな説明でわかってもらえるでしょうか?

  • エクセルのマクロでワークシートチェンジについてお教えください

    以前教えていただいたマクロで セルに入力があったら起動するマクロを作っています ・・・Private Sub Worksheet_Change(ByVal Target As Range)・・・ 今回お聞きしたいのは シート上にボタンを作っておいて そのボタンを押すたびに ワークシートチェンジ自体のマクロを発生する、しない を切り替える 方法を教えていただきたいのです  「発生している状態で作業をして  ボタンを押して発生させなくして コピーをして  別のシートに貼り付ける」というようなことをしたいのです  (ワークシートチェンジが発生している状態だと  コピーするための選択ができないので) わかりにくい部分がありましたら 細くさせていただきますのでよろしくお願いいたします

  • Range("B19:T19").Select

    よろしくお願いします Private Sub Worksheet_Change(ByVal Target As Range) 内のマクロで Range("B19:T19").Selectの 19をTarget.Rowで表現すると Range("B19:T19").Selectをどう直したらいいでしょうか? こんな簡単なことが分かりません どなたか教えてください

  • エクセルVBAについて

    エクセルVBAについて range("B5") = 1行の、選択したセルの値 というようなマクロを作成したいと思っています。 というのも、B5セルの値が、1行で選択したセルの値に変化できればと思っています。 ちなみに下のようなコードを書いてみたのですが、うまくいきません orz Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("B5") = Rows(1).ActiveCell.Value End Sub 初心者で申し訳ありませんが、よい方法がありましたら、 よろしくお願いいたします。

  • エクセル95のマクロ

    エクセル95で Private Sub Worksheet_Change(ByVal Target As Range)  というのは使えるんでしょうか? リターン押したときに移るセルを操作したいので 代わりになるものでもあれば教えて頂きたいです。 よろしくお願いします。

専門家に質問してみよう