• 締切済み

エクセルVBAでどうしても参考書通りにならない!!

私はFOMエクセルエキスパートの問題集をもとに勉強しています。 あるVBAの問題でどうしても結果が同じようにならないのです。 問題は、最初から、形のあるシートAに「来場者数ベストという名前でマクロの記述」記述内容「来場者数が多い順⇒上位3件のレコードを青、セルA1を選択」   次に「リセットという名前でマクロの記述」⇒記述内容「上位3件のレコードを黒、ナンバー順に並びかえる、A1を選択」 この2つのマクロをシートAに「ボタン」として2つ作りました。この時点では、問題はありません。どちらのボタンを押してそれぞれのマクロが記述されます。 この後のVBAでひっかかっています。 VBEを使ってマクロ「来場者数ベストの上位3件のレコードが青であったものを、上位5件のレコードを赤にする。」そうすると、なぜかここでもう一方のマクロ「リセット」の方の表の一覧に、指定もしていないのに「赤のレコードが2件」出てくるのです。 なぜでしょう? 文字だけで、説明しております。なかなかお伝えづらいのですがご回答いただけるのであれば是非よろしくお願いします。

noname#27182
noname#27182

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 直接の回答とは違ってきますが、もし、つなげて考えれば、簡単なロジックです。 しかし、ロジックをつなげられるのは、なれていないとできません。 「順位づけ1・マクロ」 (a) 順位 1~3 ->青 「順位づけ2・マクロ」 (b) 順位 1~5 ->赤 「リセット・マクロ」 (c) 順位 1~3 -> 番号順に並べ替える 3つを黒に変更 これを一緒だと考えれば、(b)の一部が入らないので、2 つが残ってしまいます。 マクロを覚えるつもりでしたら、これらは、単発で行っていったほうがよいです。 今、マクロの段階が、どこの段階かは良くわかりませんが、本来、そのあたりのマクロは、一回やって、わからない場合は、後回しにするのが一般的です。あまり、そういう部分で考え込まないほうがよいです。先は、まだ長いですから。途中で疲れてしまいます。 上記の場合、問題集として解答は見えてきませんが、学習用のマクロとしては、それぞれは別ものです。基本的には、私は、そのあたりは、入り組んでいて、覚えにくいように思います。 >シートAで作った2種類のマクロは「関連してる」ということですか? FOMのテキストの特徴は、一通り、マクロで何かの仕事をさせようとしますが、その内容からは、別々のものとして完成させるようにできているはずです。しかし、それ以上に、そういう処理は、Rangeオブジェクトについて、きちんと理解していないと、なかなか思うようにできません。その段階までは、まだ、当分先の話のような気がします。 マクロを覚えるときには、なるべく短い構文を数多くこなして実行するようにしたほうがよいです。だいたい、500個ぐらい自分の手で書いて、実行させるようにしてください。

noname#27182
質問者

お礼

そうなんですよね。断片的にVBAをやっても、あまり意味がないと私自信思うんですよ。段階を踏んで1から10までやらないと・・・・。 ご回答ありがとうございました。マクロの分野は、試験後勉強をしなおします。とりあえず、今回は、合格点に達することができればいいので・・・。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

>来場者数が多い順⇒上位3件のレコードを青、セルA1を選択 とは「来場者数が多い順に並べ替えを行ってから、上位3件の色を青にする」ということですか? >上位5件のレコードを赤にする も同様でしょうか? だとすると、上位5件が赤色になっているのに、「リセット」では上位3件だけ黒色に戻していますね。「リセット」を実行すると当然2件は「赤」のまま残ってしまいます。そういう原因ではないのでしょうか? リセットマクロは「上位3件のみ黒色にする」のではなく、「リスト全件を黒色にする」ようにしたら、汎用的になると思います 意味が異なっていたらごめんなさい

noname#27182
質問者

補足

そうです、「来場者数が多い順に並び替え、上位3件を青、そしてセルA1を選択してマクロの記述終了」です。上位5件のレコードを赤に・・・も同様です。 貴殿のおっしゃることは、シートAで作った2種類のマクロは「関連してる」ということですか?私は、この2種類のマクロは別の物、つまり、マクロ「売上ベスト」を選択すると「売上ベスト」で「記述」したマクロが表示され、マクロ「リセット」を選択すると「リセット」で「記述」したマクロが表示されるのでは・・・・と。 「意味が異なっていたらごめんなさい」←長々とした文章に回答いただきありがとうございます。

関連するQ&A

  • エクセルvbaで、ランク順に配分する

    たとえば、1位~5位まで順位を成績順に決めて、賞品3つ(商品の数は毎回変動する)を1つずつ上位から分けたいのですが、vbaで上記を行うにはどう記述すればよいでしょうか。 イメージは、賞品の数が書いてあるセルがあり(上記の例では3)、そのセルの数値が0になるまで上位から分けていく、というものです。商品の数によっては当たらない人もいます。よろしくお願いします。

  • Excel VBAでランク上位から配分する方法

    たとえば、1位~5位までの順位を成績順に決めて、賞品3つ(商品の数は毎回変動する)を1つずつ上位から分けたいのですが、vbaで上記を行うにはどのように記述すればよいでしょうか。 イメージは、賞品の数が書いてあるセルがあり(上記の例では3)、そのセルの数値が0になるまで上位から分けていく、というものです。商品の数によっては当たらない人もいます。よろしくお願いします。

  • Excel VBAでの背景色の指定

    VBAで背景色を指定する場合、16進で指定することができ、「&H」以降に16進を書くやり方のようです。 例えば灰色は「Range("A1").Interior.Color = &H808080」で問題ないです。 ところが赤や青は「&HFF0000」や「&H0000FF」と書いても「&HFF」に変わってしまいます。 「&HFF0000」は「&HFF」になっても赤になるので問題ありませんが、「&H0000FF」も「&HFF」になり赤になってしまいます。 どういうふうに記述すけばよろしいのでしょうか。 どなたか教えてください。

  • vba

    excel VBAで 今ある列の連続した範囲(仮に$D$2:$D$8とか、$B$3:$B$7)とかがセレクトされているとする。 そのセレクトされている状態でTestマクロで処理し、それが例えば$D$2:$D$8の場合は、順に1,2,3,4,5,6,7というように1番から順にセルの個数まで数字を表示したい。($B$3:$B$7  なら順に1,2,3,4,5) Testマクロの記述は? なおTest2マクロでは、順に1,2,3,4,5,6,7のかわりに(1)、(2)、-- としたい。 Test2マクロの記述は? よろしく 

  • エクセルのVBAを使用したときのセル範囲について

    エクセルでVBAを勉強しています。(初歩です。初心者です。) マクロを記述したあと、エクセルシートに表示しますよね。 たとえば、今度は、Visual Basic Editorを使って、「上から3行目が赤」にしていたものを「上から5行目を青にする」という問題があったとします。Visual Basic Editor上でどうやったら、その指定しているセル範囲がわかるのでしょうか?つまり、上から3行を上から5行目にするといことです。 また、Visual Basic Editor上では、「色」を番号で表示しますが、これは覚えておく必要があるのでしょうか?たとえば「赤」は3番とか・・・・。 初心者ですのでご了承ください。

  • (VBAにて)列のセルの結合について

    VBAを使って列の結合を行うとしています。 内容は ・A3とA4を結合~A59とA60を結合(60まで)  という具合に、セル2つで一つの組み合わせです。 ・これが列単位にA列~Y列まで同じように行おうとしています。 ・一つ一つマクロで記述するとえらい手間がかかるので  簡略するマクロ文は無いでしょうか? ・また、この作業はsheet3で行おうとしています。  内容はsheet1に書かれていまして、  (A4~Y4までが1レコードでA20~Y20まであります。)  マクロで普通にsheet3にコピーをすると1レコード目の後に  2レコード目が飛んで3レコード目が次にきてしまいます。 ・これはどうすればよいでしょうか? 素人であまりよく分かりません ご教授宜しくお願いします。   

  • エクセル VBA

    エクセル VBA セルA1に ”□はい □いいえ”とあり それをダブルクリックすると ?フォームが表示されチェックしますか?と聞きOKなら ■ はい となり   次に続けて ?フォームが表示されチェックしますか?と聞きOKなら ■いいえ となるような マクロの記述は出来るのでしょうか? すいません! 教えてください。

  • Excel VBAのわかりやすい教科書を探しています

    仕事のルーチンワークをマクロにしたいのですが、何から初めてよいのかわかりません。 したい作業は、 1.顧客毎の点数を計算して得点が高いもの順にソートする 2.年齢層・性別別に上位10件を別表を作って表示する 3.その表を印刷する という具合です。 即効性があればよいのですが、最初から読み込んでいけばマクロの 基本から学べる良質の教科書があれば教えてください。

  • エクセルVBAの記述について

    OSはWin98、エクセル2000です。 次の処理をVBAで処理したいのですがうまく作動しま せん。 ご教授願います。 セルA1から下に向かって1から20までランダムに数 値が入ってます。 同じ数値は無く、数値も3行(セルA3)で終わる場合 も有ります。 この場合セルC1から下に向かって順にA1&A2、A 1&A3と記述したいのですが・・・ 例) A1に5、A2に7、A3に15、A4に10でしたら C1に57、C2に515、C3に510、C4に715 C5に710、以下・・・と記述 よろしくお願いします。m(_ _)m

  • エクセルVBAでワークシート関数のようにしたい

     例えば、セルA1に日付を入力して、セルB1に関数WEEKDAYが入力されていると、すぐセルA1の値を返してくれますが、これと同じことをVBAで再現したいのですが、可能でしょうか?  マクロやVBAでWEEKDAYを記述しても、「ツール」→「マクロ」→「マクロ」か「VBA」でやらないとA1の値をB1に返せないので、A1に日付を入力した瞬間、B1に値を返したいのですが、よろしくお願いします。

専門家に質問してみよう