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

アクティブセルにマクロを実行させたいのですがうまくいきません。
2007のエクセルを使用しています。
(1)命令文で指定しているセル(G9:G11)をJ9:J11やR14:R16等でも使用したい。
(2)また作成したマクロを同シート内オートシェイプに登録したい。
よろしくお願いいたします。
Sub Macro2()
'
' Macro2 Macro
'

'
Range("G9:G11").Select
Selection.ClearContents
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.Orientation = xlVertical
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
With Selection.Font
.Name = "MS P明朝"
.FontStyle = "標準"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 16777164
.TintAndShade = 0
.PatternTintAndShade = 0
End With
ActiveCell.FormulaR1C1 = "搬入"
With ActiveCell.Characters(Start:=1, Length:=2).Font
.Name = "MS P明朝"
.FontStyle = "標準"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
ActiveCell.Characters(1, 2).PhoneticCharacters = "ハンニュウ"
Range("G12").Select
End Sub

A 回答 (6件)

セルをアクティブにした状態でマクロを実行したらそのセルの書式が変わるようにしたいのであれば


Range("G9:G11").Select
この部分をアクティブセルを基準とした指定に変更すればよい。
Range(ActiveCell, ActiveCell.Offset(2, 0)).Select

こんな感じかな?

この回答への補足

回答ありがとうございます。
貼り付けて実行したら思っていたとおりに動いてくれました。
ただ、最後のRange("G12")なのですが、
マクロを実行させたその下のセルに移動する様には出来ないでしょうか?
例えばこの命令文の中で1列3行のセルを結合させているのですが、
K14でマクロを実行した場合K17にセルが移動して終わる様な。
よろしくお願いいたします。

補足日時:2009/01/30 13:48
    • good
    • 0

>K14でマクロを実行した場合K17にセルが移動して終わる様な。



Range("G12").Select

ActiveCell.Offset(3, 0).Select
に変更してください。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます!!
Offset(3, 0)の3を 1に変えたらバッチリ出来ました。
とっても助かりました。
ありがとうございました。

お礼日時:2009/01/30 14:18

こんにちは



>(1)命令文で指定しているセル(G9:G11)をJ9:J11やR14:R16等でも使用したい。

ActiveCell を、G9 とか、J9 に指定して、マクロを実行すればよいです。

'標準モジュール

Sub Enter1()
  With ActiveCell.Resize(3)
    .ClearContents
    .MergeCells = True
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .Orientation = xlVertical
    .Value = "搬入"
    .Interior.Color = 16777164
  End With
End Sub


>(2)また作成したマクロを同シート内オートシェイプに登録したい。

一般的にマクロは、コマンドボタンに登録します。
オートシェイプでも可能ですが、右クリックで、マクロに登録してください。
    • good
    • 0

場合によっては、シェイプから実行ではなく、


シートのイベントで実行、でもいいかもしれません。

http://excelvba.pc-users.net/fol3/3_6.html
    • good
    • 0

まず、Range("G9:G11").Select と書いているところを J9:J11の範囲に修正します。



このアクティブセルから 相対で座標が記述されている箇所は修正不要です。
最後の Range("G12").Select も、 J11 に修正した方が良いでしょう。

もし、3箇所とも続けて実行するのであれば、いちいち最後の Range("G12").Select は書かずとも良いでしょう。
    • good
    • 0

同時に行いたい、ということでしょうか?


それとも、セル範囲を変えるにはどうすればいいのか?
ということでしょうか?

なお、シェイプで行うなら、
シェイプを右クリック

マクロの登録
でマクロを選択してOK
で出来ます。
    • good
    • 0

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