• ベストアンサー

エクセルのマクロのボタン機能で文字と色の同時入力の方法

いつもお世話になっております。 大変あつかましい質問ですがどうぞお願いします。 マクロのボタンで色を塗ることはできるのですが、色と文字を同時にひとつのボタンで入力をする方法(プログラム)を教えていただきたいです。たとえば青く塗ったセルに「10:00」と表示できるボタンを作りたいです。 もうひとつお願いします。 たとえばRange(Cells(1, 1), Cells(10, 10))の場合A1からJ10になるとおもうのですが、マウスで選択した範囲のみボタンの命令が働くようにするにはどうしたらよいのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • pauNed
  • ベストアンサー率74% (129/173)
回答No.1

こんにちは。 Excelには、便利な[新しいマクロの記録]というマクロ自動記録があります。 それを参考にしてみてください。 >色と文字を同時にひとつのボタンで入力 >青く塗ったセルに「10:00」と表示 とは、解釈が分かれるような気がしますが? Activeなセルに対して青く塗ると同時に 10:00 と入力...なら Sub Macro1()   ActiveCell.Interior.ColorIndex = 41   ActiveCell.Value = "10:00" End Sub ですが。 既に青く塗ってあるセル全てに 10:00 と入力なら Sub Macro2()   Dim r As Range   For Each r In ActiveSheet.UsedRange     If r.Interior.ColorIndex = 41 Then       r.Value = "10:00"     End If   Next r End Sub とか。 >マウスで選択した範囲のみボタンの命令が働くようにするには マウスで選択した範囲全てに何らかの処理を行うのですか? その場合は Sub Macro3()   If TypeName(Selection) = "Range" Then     Selection.Interior.ColorIndex = 41     Selection.Value = "10:00"   End If End Sub とか。 そうではなくて、いくつかのセルに対して、何らかの処理を行うマクロを実行する時、 Selection範囲から外れていたら実行しないという事であれば、 「いくつかのセル」をどうやって指定するか、が少し面倒ですけど? Sub Macro4()   Dim r As Range   Dim ri As Range   If TypeName(Selection) = "Range" Then     Set r = Selection     On Error Resume Next     Set ri = Application.InputBox("どこ?", Type:=8)     On Error GoTo 0     If Not ri Is Nothing Then       Set ri = Intersect(ri, r)       If Not ri Is Nothing Then         ri.Interior.ColorIndex = 41         ri.Value = "10:00"       End If       Set ri = Nothing     End If     Set r = Nothing   End If End Sub

original8
質問者

お礼

早速の回答ありがとうございます!! macro3を利用させていただきます。 私のしたかったことがそのものが可能です。 見事にかなったのでうれしい限りです。 このたびはありがとうございました。

関連するQ&A

  • エクセルのマクロについて

    エクセルのマクロについて 領域の範囲選択→貼り付けの繰り返し処理をループで考えています。 領域の範囲選択し、貼り付け処理をマクロの自動記録で、出してみました。 Sub Macro1() Range("E6:G12").Select Selection.Copy Range("E17").Select ActiveSheet.Paste Application.CommandBars("Stop Recording").Visible = False End Sub この時に、「Range("E17").Select」の命令は「Cells」関数に置き換えられるのですが、「Range("E6:G12").Select」のように複数のセルの領域選択をする際に、「Cells」関数ではできないのでしょうか。 「Cells」関数を使えば、行列を数値にし、変数を使えば、LoopかFor命令で繰り返し処理ができるのですが、わかる方、解答ください。よろしくお願いします。

  • エクセル マクロ

    はじめまして。 エクセルでマクロを使って研究を進めているものです。 最近マクロを使い始めたのですが、ワークシート関数のスクリプトについてご質問があります。 具体的な記述を書いたほうが説明しやすいので、下に記述します。 Sub Macro1() Windows("a.xls").Activate ActiveCell.FormulaR1C1 = "=SUM(RC[-8]:RC[-1])"・・・(1) Range("J3").Select End Sub このような命令があるときに、sum関数の中に変数を入れることを考えます。そのときに、R1C1表示では選択したセルを基準にして変数を考えなくてはいけないので考えにくいです。そこで、イメージとしてですがこのような書き方はできないのでしょうか。 (1)の部分 ActiveCell.Formula = "=SUM(Range(Cells(2, 2), Cells(2, 変数)))" つまり、rangeやcellsを使って書きたいということです。 また、実際のエクセルのセルに入力されている関数をそのままコピーして、それに変数を自分で手直しして加えるような方法がありましたら教えてください。 よろしくお願いします。

  • Excel マクロで使用済みのボタンを消したい。

    マクロで使用済みのボタンを削除したいと考えています。 毎回ボタンの数が同じ場合は作れたのですが、 ボタンの数が場合によって異なります。 具体的にはD5セルより下にあるボタンを削除したいと考えています。 ボタンを作る時のマクロは Set ws1 = Workbooks("ブックA").Worksheets("Sheet1") Set ws2 = Workbooks("ブックB").Worksheets("Sheet1") i = 2 j = 5 Do Until ws1.Range("B" & i) = "" ws2.Range("D" & j).Value = ws1.Range("B" & i).Value With ActiveSheet.Buttons.Add(Cells(j, 4).Left + 1, Cells(j, 4).Top + 1, _ Cells(j, 4).Width - 1, Cells(j, 4).Height - 1) .Name = "いの" & i - 1 .OnAction = "Select" .Characters.Text = Range("D" & j) End With i = i + 1 j = j + 1 Loop といった感じで、ブックAのB列のデータ数だけ、 ブックBのD5から下に値をコピーし、 その上にセルサイズに合わせてボタンを作り、 Nameを上から順に「いの1」「いの2」・・・、表示はボタンの裏に隠れている値をつけ、 ボタンにマクロ「あいうえお」を登録します。 次にボタンをクリックしたときに、 上の工程で作られたボタンを削除したいと考えています。 a = 1 Do Until ActiveSheet.Shapes("Order" & a) = "" ActiveSheet.Shapes("Order" & a).Delete a = a + 1 Loop b = 5 Do Until Range("D" & b) = "" Range("D" & b).ClearContents b = b + 1 Loop Call あいうえお End Sub ボタン裏のセルは削除できたのですが、 肝心のボタンの削除は出来ませんでした。 どなたかご教授していただければ大変助かります。 宜しくお願いします。

  • マクロ 色の設定

    特定の文字を入れると選択したセルが塗りつぶされるようにしたく思い、 ネットで検索して、できることはできたのですが、 自分の好きな色に変更する方法が分かりません。 当方、マクロに関しては全くの初心者です。 どこをどのように変えればよいのか教えて下さい。 Private Sub Worksheet_Change(ByVal Target As Range) If Range("B22").Value = "アポ" Then Range("B22:J22").Interior.Color = vbRed Else Range("B22:J22").Interior.ColorIndex = xlColorIndexNone End If End Sub B22のセルに「アポ」と入るとB22~J22が赤色に、なるというマクロです。 多分、「vbRed」というのを変えればいいとは分かるのですが、どうしてよいのやら… 自分としては、添付した画像のように、左側の文字によって、隣のセルが ピンク、オレンジ、水色、黄色(自分で作った色かと思います)に なるようにしたいのです。

  • Excel2007 文字をマルで囲むマクロについて

    Excelで 1.あるセルを選択あるいは複数のセルを選択。 2.ボタンをクリックすると、実線のマルで文字を囲む。   (線の太さはマクロ内で0.75を指定) 3.もう一回ボタンをクリックすると点線のマルで文字を囲む。 4.もう一回クリックすると文字はマルで囲まれない。 5.以降、ボタンをクリックすると2.~4.がくり返される。 1.はマウスでセルをクリックする操作をしますが、2.~5. はマクロを設定したボタンをクリックする操作です。 選択するセルは、離れたセルを複数選択していてもうまく文字を 囲むマクロです。 このボタンに設定するマクロを教えていただけないでしょうか。 (使い方としては、表の上部のセルにボタンをレイアウトし、  ボタンにマクロを設定し、表の中のセルをクリックしたあと  マクロを設定したボタンをクリックすると、選択したセルが  マルで囲まれる。そんな操作です。) 選択するセルに入力されている文字は、 「全角1文字」「全角2文字」「半角1文字」「半角2文字」の ケースがあります。 できれば、マクロの中でこの4つのケースでもうまくマルあるいは 楕円で文字を囲む処理を一つのマクロでできると助かります。 Excel97でもこのマクロを使います。 難しい質問で申し訳ありません。宜しくお願い致します。

  • エクセルのマクロのセルの範囲指定

    エクセルのマクロで、うまくセルの範囲を指定できません。 例えば、 Range(Cells(5.6), Cells(8, 7)) = "AAA" と、指定した時は、F5:G8のセルにAAAという文字を代入するつもりで書いています。 ところが、マクロを実行すると、F1:G8まで、AAAの文字が代入されます。 どうしてでしょうか。 宜しくお願い致します。

  • エクセルのマクロについて

    エクセルのマクロ実行についてですが、 例えば、 E1セルの値が1ならばこうする(マクロ名 E1セル1) E2セルの値が2ならばこうする(マクロ名 E1セル2) E3セルの値が3ならばこうする(マクロ名 E1セル3) というマクロを別々に作りました。 これをボタンで実行する時に、 If Range("E1").Value = 1 Then ElseIf Range("E1").Value = 2 Then 2行目には作ったマクロを全部貼り付けないといけないのでしょうか? それとも簡単にこの場合は、マクロ名E1セル1を実行するという命令することができるのでしょうか? できるのであれば、入力方法を教えてください。 質問が分かりにくいと思いますが、よろしくお願いします。

  • エクセルマクロ 「101」 ボタンをおして 「102」となるマクロ?

    エクセルです。 一つのセル(A4)に「101」と書いてあります。それをVlookup関数で他のシートから一致する情報を取り出しています。次に同じセルに「102」とうつと、同じように一致する情報を取り出しています。 そこで、一回、一回、セルに102や103と打つのではなく、ボタンを押すと次の番号にうつるようなマクロを組みたいと思ってます。 ただ、101~130 次は、201~231みたいになってます。 一つのマクロでなくても良いので、よろしくお願いします。 最初は、 Range("A4").select  セルA4を選択 だと思うのですが、この次から分かりません。

  • 表示形式を変えるマクロのコードは?エクセル2010

    エクセル2010です。 よろしくお願いします。 特定の範囲のセル範囲(I7:M29)の表示形式が数値、-1234 文字色赤となっています。 それを 特定のセル範囲に数値を入力し終わって セル範囲のあるセルを選択した状態で あるコマンドボタンをクリックしたら、そのセルの表示形式を(1234) 文字色赤 としたいのですが また あるコマンドボタンをクリックしたら  特定の範囲(I7:M29)を最初の状態、 表示形式 -1234 文字色赤にしたいのですが マクロでの使用は どういったコードが 考えられますでしょうか?

  • エクセルのマクロで入力文字確定(Enter)したら印刷開始し入力文字を

    エクセルのマクロで入力文字確定(Enter)したら印刷開始し入力文字をDeleteする。 エクセルで自分が作成したファイルを開きます。 これにはマクロが入っていて、ファイルを開くと セルのD4がアクティブになるようにして有ります。 (カーソルがD4の所に行って点滅で文字入力待ちの状態) シート保護をしてあり、セルD4だけがロックをはずしてあるので セルD4にしか入力は出来ません。 文字入力をすると当然D4のセルに入力がされるのですが 入力後その文字を確定する為にEnterキーを押します。 そうしたらそのシートの印刷がされる(1部です)ようにで来ますか。 そして印刷終了後、セルD4の文字はDeleteされて またアクティブ(カーソルがD4の所に行って点滅)にして 次の入力を待ちたいです。 (文字入力→Enterの瞬間印刷と同時に文字入力が消えるので  入力者は入力確定を見れなくなりますが → 2秒後にDeleteとか出来ますか?  または、Enterキーを押すと画面に「印刷中です」と表示したあと  セルD4をDeleteとか。)  現在は、 表示-ツールバー-フォームから作成したボタンにマクロを登録してあります。 セルD4に文字を入力しEnterキーで確定後、このボタンを押すと印刷が実行され セルD4の文字がDeleteされてアクティブ(文字入力待ち状態)になります。 このボタンを押すのを省きたいです。 よろしくお願いします。

専門家に質問してみよう