プロが教える店舗&オフィスのセキュリティ対策術

 マクロを勉強中です。

 EXCELでセルを結合してやり、色を付けるマクロを作成しましたが、実行してやるとそのセルでしか実行しません。
 これは何故でしょうか。

 また、希望する場所で実行させたい時にはどの様にしたら良いのでしょうか。

A 回答 (3件)

こんばんは。



できれば、コードは見せていただきたかったですね。

ただ、それは、記録マクロの方法がいけなかったのです。
選択した後の状態からすれば、「記録マクロ」のボタンを押して、結合セルを作り、色をつければ出来上がっていたはずです。試してみてください。

> これは何故でしょうか。
それと、コンピュータの操作を覚える上で、「なぜ」とは考えないで覚えようとしてください。しょせん、他人(MS)の決め事なのです。やり方を覚えるしかありません。人間が作ったものは、どこかに人間の癖が入っています。

これから先も、マクロでも、ワークシートでも、不可解なものが一杯出てきます。私は、昔、同じように聞いたら、有名な某達人の答え、「やってみるまで分からない」という回答を貰って、唖然としたことがあります。

でも、理屈は後から付いてくるものなのですね。

-------------------------------------------
'サンプル
'これは、結合セルを作りますが、そこが間違えたら、もう一度実行すると、それをナシにするというマクロです。初歩的なマクロです。
--------------------------------------------

Sub MergeCellChange()
  With Selection
    If Selection.Count = 1 Then Exit Sub 'ひとつのセルではダメ
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    If .MergeCells = False Then
      .MergeCells = True
      .Interior.ColorIndex = 6 '黄色
    Else
      .MergeCells = False
      .Interior.ColorIndex = xlNone '色ナシ
    End If
  End With
End Sub
    • good
    • 0
この回答へのお礼

Wendy02さん、有難う御座います。
もう少し勉強します、今後とも宜しくお願いします。

お礼日時:2007/11/08 12:42

>セルで実行させたい


この表現はおがしい。実行するプログラムはセル単位にあるわけではない。関数式だとセルに入れるので、そんな感じですが(実態は違う)。「セルで」の「で」のイメージなんですが、
希望する=選択したセルを「対象として」、特定の処理をしたい、と表現します。
VBAでは、ブック、シート、セル、セルの集まりの行、列、セル範囲を対象(下記○○)にして指定し、
 ○○.XX
 ○○.XX=△△
のように○○はオブジェクトを表し、XXはメソドだとか、xxはプロパティだとかを考えます。
ーー
マクロに記録では、Range(・・).Selectの・・が具体的なセル番地
になっているので、(=操作がそうしたのです。また実際の操作は具体的なセル範囲を相性に行わざるをえない。)、質問のようになります。
マクロの記録をやり始めて、次ぎの課題が、適宜対象を変化させたいというものになりますが、プログラムの経験を積まないと、すぐに会得できるものではありません。最近VBAをやり始めたのでしょうが、「VBA」ではなく、エクセルの「マクロ」と題名にある本を、1度通読してください。
    • good
    • 0

こんにちは



自動記述で作成されたものだと推察します
記述の中にセルを指定する記述が含まれているからだと思いますので、記述の中の
Range("○○").Select
とうい行を削除してしまえばアクティブセルで実行すると思います。
    • good
    • 2

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