• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロの実行場所(セル)の指定(初心者))

エクセルのマクロの実行場所(セル)の指定(初心者)

このQ&Aのポイント
  • エクセルのマクロを使用して、特定の条件に基づいてセルの書式を設定したい場合、相対参照を使用して指定セルに設定する方法について教えてください。
  • マクロの記録機能を使用して、特定の条件に基づいてセルの書式を設定するマクロを作成しましたが、セルの指定部分を相対参照にする方法がわかりません。
  • 選択しているセルに設定するためには、マクロのコードの指定セル部分を修正する必要がありますが、具体的にどのように修正すれば良いのでしょうか?

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

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.3

ANo.1です。 > 土日だったため試行できずにいましたが、今試したところ、マクロの実行はカーソルのある位置(アクティブセルというのでしょうか?)に書式設定されるのですが、書式設定の式中のセルの指定が空白 LEFT( ,4)<>TEXT・・になっています。 コードはコピペしました?それとも手打ち? 手打ちでしたら変数「sAddress」のつづりを間違えている可能性が高いと思います。 ご確認ください。

akira0723
質問者

お礼

今、作業を開始する前に少し練習を兼ね検証してみたのですが、上記の書式のコピペは不要だと分かりました! これで作業を開始させていただきます。 助かりました。  また宜しくお願い致します。

akira0723
質問者

補足

度々のご回答ありがとうございます。 お手数をお掛けします。 朝一で再度コードをコピペして確認したところ、意図したとおりに動くことを確認しました。 前回もコードはコピペしたのですが、sが抜けたのでしょうか? 非常に助かりました。 先ずはこれで作業を進めようと思います。 実は、この続きの作業も有るのですが、当方の実力では折角教えて頂いても持ち腐れになる可能性もあるので、出来そうなこから1つずつ動作確認しながら作業するつもりで質問させて頂きました。 マクロは超が付く初心者なので回答者様からの指摘を確認しながら、1つずつです。 入門書も購入したのですが、実務的にはなかなかな追いつかずなもので、ついここで質問させていただいています。 このマクロの続きの作業は、このセルの書式設定を下まで書式コピーすることなのですが。 下に引っ張る範囲がシート毎に違っているので、まずは開始セルにマクロで書式設定して、後は「書式コピー」で何とか。 恐らくRangeで指定すれば一発で、と思いますが、今度は当該の書式設定の仕方が分からず、まずは確実に任意の1つのセルに設定して、後は書式コピーで作業することを考えました。 次に選択した範囲への「書式のコピー」をマクロにする手も有りかと思いますが、どうせ2度手間なら、書式のコピペで対応した方が当方には向いているかと、言う段階です。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

なんというか、この処理についての意義がよく伝わってこないので、 解説はしませんが・・・ Dim myAdd As String     myAdd = Selection(1).Address(rowabsolute:=False, columnabsolute:=False)     With Range(Selection, Selection.End(xlDown))         .FormatConditions.Add Type:=xlExpression, _                 Formula1:="=Left(" & myAdd & ", 4)<>TEXT(TODAY(),""YYMM"")"         .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority         With Selection.FormatConditions(1).Font             .Bold = False             .Italic = True             .Color = -4165632             .TintAndShade = 0         End With         .FormatConditions(1).StopIfTrue = False     End With こんな感じにしてやれば、アクティブセルから下方向の データが入力されている範囲に一気に条件付き書式を設定できます。 質問して回答を得るのは良いことですが、 中に「何が書いてあるのか」理解しないと意味が無いように思います。 ま、それ以前にエクセルの基本機能を知ることの方が大事ですけどね。 例えば今回の案件について、 このマクロ「のみ」が複数回走るとどうなるか? このマクロを走らせる前にやっておくべき処理があるんですが、何でしょう?? その辺りも考えておかないとダメですよ。

akira0723
質問者

お礼

ご丁寧な回答ありがとうございます。 当方に使えるマクロには限界が有りますので、試行錯誤しながら、手作業と併用で、コスパ(時間/効果)の良いところで妥協しながらの作業になります。 今後とも宜しくお願い致します。

akira0723
質問者

補足

tsubu-yukiーさん いつもお世話になっております。 何度も適切な回答を頂いていますので、質問の背景などすこし説明したい、と思ったら長文になってしまい更に申し訳なく。。。 (1)ご指摘の件は、なんとか中身を理解したいと勉強を始めているのですが。。 今回のような比較的簡単(小生でもマクロなら簡単にできると思われる)作業ですら、入門書からでは追い付かず、実践的にマクロの記録(これは入門書で覚えました)を利用してそれの組合せを試行錯誤している状況です。 (2)ご指摘の「マクロのみを複数回繰り返す」は今回の試行錯誤で既に経験済みの内容かと? 設定がどんどん増殖するような感じになってしまう現象の事でしょうか? 当方はこれを確認して(あっさり)自己解決をあきらめてここで質問させてもらった次第です。 (3)必要な前処理については、当然ですが全く思いつきません。 後、関数はこれまで色々使っていますが、そろそろ限界かと、マクロを始めました。 今後もしばらく(あといくつかの作業に関して)ここでお世話になると思いますので、何卒よろしくお願い致します。 (4)目的は、複数の人が毎日使用する多数のエクセルシートへの誤入力防止です。 例として、文書Noの最初のいくつかの数字が日付なのですが、20170418、1704、201704、704、0428、等々依頼部署によって違っており、これを間違えると結構大きな問題になるので、各シートに規則を外れた場合のアラームを設定しようとしています。 このNoは他のシート以外にもワードの文書等にも、あちこちに転記されるのですが、この転記に関してはほとんど関数とリンクで何とか対応したのですが、元のNoの入力間違いもたまに発生するので、今回の書式設定をしようとしているのですが、限界を感じてこれまで見ない様にしていたマクロを勉強し始めた次第です。 入門書で、マクロの自動記録にはまったのですが、やはり自動記録では限界があり。 対象ブックが当面200、全部で500程度あり、これまでは手作業で対応していたのですが、どうしてもマクロを使用したくなります。 質問が抜けが多くお手数をおかけしますが、今後とも宜しくお願い致します。

すると、全ての回答が全文表示されます。
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.1

必要最低限の修正にするならこんな感じでしょうか。 Selection.FormatConditions.Add Type:=xlExpression, Formula1:= "=LEFT(A1,4)<>TEXT(TODAY(),""yymm"")" ↓ sAddress = Replace(Selection.Address, "$", "") Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=LEFT(" & sAddress & ",4)<>TEXT(TODAY(),""yymm"")" 自分の作業で使うためでしたらこの程度で十分だと思いますが、誰かに使ってもらうのでしたら、複数セルを選択した場合などの処理を追加する事をお勧めします。

akira0723
質問者

補足

mt2015-さん 早々のご回答ありがとうございます。 土日だったため試行できずにいましたが、今試したところ、マクロの実行はカーソルのある位置(アクティブセルというのでしょうか?)に書式設定されるのですが、書式設定の式中のセルの指定が空白 LEFT( ,4)<>TEXT・・になっています。 ここに選択したセルを入れれば完成なのですが。。。 お手数ですが補足の程宜しくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A