• 締切済み

エクセルでマクロを自動で実行させることはできますか?

エクセルで 9-9-9 とか書いてあるとこを○の中に9という風に変換する マクロをこちらで教えてもらったのですが これを9-9-9とかのデータを貼り付けた途端に マクロで○の中数字に変換させることはできるんでしょうか? 変換させたい列は決まっていてUの列なんです。 宜しくお願いします。

みんなの回答

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

こんばんは。 前回の#4さんのコードはユニークだと思います。 本来は、前回の#4さんのコードをサブルーチンにしてしまっても良いわけです。 Sub chgStringFormat(arg as Range) Selection の部分を、arg に換えて使えるはずです。 しかし、まあ、こちらもVBAを書く側として、あまり人のマクロを使うわけには行きませんもで、最初から、こちらで作り直しました。 前の書き込みのNo.4さんよりも、もう少し、エラー処理を厳しくしました。 >9-9-9とかの数字は18まであってランダムに変わります。 この条件は、元のものに従うことにしましたので、21を越えた時に、( )になります。全角/半角の入力は区別はありません。 ======================= コードの貼り付けの手順 ======================== 画面の下の[シートタブ]を右クリック-[コードの表示]-白い画面に貼り付ける '<シートモジュール> '-------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range)   Dim InBuf As String   Dim OutBuf As String   Dim arBuf() As String   Dim c As Range   Dim NumberItem As String   Dim cnt As Integer   Dim i As Integer   Dim j As Integer   Dim k As Integer   'U列であるかチェック(21列)   If Target.Column <> 21 Then Exit Sub   'Event の起動を制御   Application.EnableEvents = False   For Each c In Target    If VarType(c.Value) = vbDate Then      InBuf = Format$(StrConv(c.Value, vbNarrow), "yy-mm-dd")    ElseIf StrConv(c.Value, vbNarrow) Like "#*-#*-#*" And _      Len(c.Value) - Len(Replace(c.Value, "-", "", , , vbTextCompare)) = 2 Then      InBuf = StrConv(c.Value, vbNarrow)    End If    If Len(InBuf) > 0 Then      '配列に格納      arBuf() = Split(InBuf, "-")      For j = LBound(arBuf()) To UBound(arBuf())       NumberItem = arBuf(j)       If IsNumeric(NumberItem) Then '数字であるか         If CLng(NumberItem) < 21 Then '21以下であるか          OutBuf = OutBuf & Chr(&H8740 + CInt(NumberItem) - 1)          cnt = cnt + 1         Else          OutBuf = OutBuf & "(" & NumberItem & ")"          cnt = cnt + 1         End If       End If      Next j      If cnt = 3 Then '変換チェック      c.Value = OutBuf      End If      c.NumberFormat = "General"      OutBuf = ""      cnt = 0    End If   Next c   Application.EnableEvents = True End Sub '--------------------------------------

masaro55
質問者

お礼

お礼が遅くなり申し訳ございません。回答ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

こんなことを質問しているのでしょうか。 本当はU列らしいが、A列とします。 全角で5-4-2のような文字列をコピーして、A列に貼り付けると (5)-(4)-(2)になる。以下「まる1」などは(1)のように表示されます。読み変えてください。 シートのチェンジイベントに Private Sub Worksheet_Change(ByVal Target As Range) a = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9") b = Array("", "(1)", "(2)", "(3)", "(4)", "(5)", "(6)", "(7)", "(8)", "(9)") If Target.Column = 1 Then For i = 0 To UBound(a) Target.Replace What:=a(i), Replacement:=b(i) Next i End If End Sub を貼り付ける。

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

こんにちは。 「シートのチェンジイベント」というのは、たぶん、イベント・ドリブン型のマクロをシートモジュールに入れるということだと思います。シートモジュールに貼り付ければよいとはいうのは分りますが、元の話が見えてないので、今のところは不可能だと思います。 >9-9-9とかの数字は18まであってランダムに変わります。補足頂ければ幸いです。 というか、「マクロをこちらで教えてもらったのですが」という元のマクロは、どんなだったのかなって思います。たぶん、前回、解決しているから、こうして次のご質問が出たのだと思います。 しかし、全角/半角混合/半角のみとか、オートシェイプで○を入れるのとか、Unicodeの丸付き数字に置き換えるのか分りませんが、そのマクロに渡す引数になるものが見えていません。ご質問者さんが満足されるようなマクロは、とても私には出来ません。 例 9-9-9 12-12-3 など。 元のマクロは、フォントの大きさ、種類、標準スタイルのセル幅など、一定の条件の上で作られたものだと信じますが、上記のような問題をどのようにクリアされたのでしょうか、私にはわからないことだらけです。

masaro55
質問者

お礼

http://oshiete1.goo.ne.jp/kotaeru.php3?q=792728 回答ありがとうございました。↑のが元の質問です。No.4の所で教えてもらったマクロでうまくいきましたが貼り付けた瞬間にマクロが作動するようにしたいのです。できますか?

noname#187541
noname#187541
回答No.1

こんんばんは。 シートのチェンジイベントで処理すればいいです。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 21 And Target.Value = "9-9-9" Then 'ここに処理を記述 End If End Sub

masaro55
質問者

お礼

回答ありがとうございます。 シートのチェンジイベントとか全く知らないのですがどうすればいいんでしょうか? 9-9-9とかの数字は18まであってランダムに変わります。補足頂ければ幸いです。

関連するQ&A

  • マクロの自動実行

    エクセルで A 列のデータが変動した場合に、マクロを実行させるにはどうしたらよいのでしょうか?

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

    エクセルでマクロを組んでいますが、ひとつだけ再現できず困っています。 A1からE100までの表で、A列からD列までの数値をE列で○と×で判定します。 この時、E列が○の場合にA,B,D列のデータをクリアしたいのです。 マクロのコードがわかれば助かります。よろしくお願いします。

  • マクロを使ってテキストを抽出したい?

    エクセルのマクロを使ってテキストを抽出したい? ある1つのCSVデータがあります。エクセルで開いてみるとA列からU列までデータがびっちり入っています。 F列の各セルにはテキストを含むhtmlタグや%%NL%%やスペースなどあります。 質問なのですがF列をテキストだけに変換(抽出)したいです。 そのようなマクロを教えていただけないでしょうか?

  • エクセルのマクロで実行したいです!

    こんにちは。エクセルのマクロで実行したいことがあります。 周りに聞く人もいなくて困っています。 エクセルのデータがあり、売上の集計をしないといけませんが、 その前にデータを整える必要があります。 A列の10000000番代以上で会社によって固定の値となります。 A列の1~1005番までが担当コードでその横が(B列)担当者名になります。 実行したいマクロは、サンプルとしてF列~L列に表示しておりますが、 実際は、A列~G列に実行します。 またB列の【不良代替】とある文字、及び【小 計】の行は削除します。 また区分(B列に挿入)には「0」か「1」の数値が入りますが、 それは後にVLOOKをあてるので、問題ないです。 マクロ実行後に、いろいろな会社がありますが、支店も本店(何も記載なし)も 別の列でいいので、例えばI列などに合わせて合計を表示したいです。 名称が色々あるため、一社一社数えると日が暮れてしまいます。 それをマクロで記載するのはできますでしょうか。 ピボットテーブルは使わない方向で行きます。 可能な限りマクロで実行したいので、ご存じの方がいらっしゃれば、 ご教授頂きたいです。宜しくお願いいたします。

  • マクロの自動実行などについて

    エクセル2003のVBAマクロについて質問です あるワークシートに値が入力されたら、マクロを自動実行するように出来ないでしょうか? 又、そのセルの値を別のセルにコピーしたいのですが、データを入力する度にセルの場所が ひとつ下へずれます。この最終列のセルの値を必ず拾うようにするにはどうすればよいでしょうか? ややこしくてすいません

  • エクセルのマクロの実行が途中で止まってしまいます。

    エクセルで表を作る工程をマクロで記録させて、その後、マクロを実行して特定の表を作ろうと思っても、実行の途中で止まってしまいます。特に、列の幅を変更せずに、途中でとまってしまいます。マクロを使って表を作りたい理由は、エクセル以外のあるデータをエクセルに移動することがよくあって、移動させた直後はエクセルの標準の形式として表になっているので、列幅を変更したり、フォントを変更したり、列の順番を入れ替えたりすることを、自動でおこないたいのです。どなたか教えてください。パソコンのメモリか何かのもんだいですか?わからなくてほんとにこまっています。どなたか教えてください.よろしくおねがいします。

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

    今までオートフォーマットで検索していたのですが,一つの列に存在するデータが多量になったため,マクロを使った検索としたいです。 検索の方法として,「コンボボックス」で選択したデータを検索したいと考えています。 現状は以下の通りです。 ○検索元となるデータは,1つのSheetにまとめてあります。 ○「コンボボックス」で指定したいデータは4つあります。 ○検索元のSheetの,D列が文字列,E列が数字,F列が文字列,G列が数字となっています。 この,D列~G列の中で,「コンボボックス」4つで指定したデータを別のSheetで表示させたいと考えています。 エクセルは,表計算やグラフならある程度使いこなせるのですが,マクロは全くの素人です。 お手数をお掛けしますが,どなたか知恵を授けてください。 よろしくお願いします。

  • Excel 2007 で マクロを有効にするには?

    初めまして Excel 2007 で「・・・マクロが無効になっている可能性があります」 とコメントが出て CSVデータをExcelデータに変換できないのですが どのようにすれば マクロを有効にできるのでしょうか? どうか ご教授ください

  • マクロの自動実行

    会社のパソコンで毎朝使うエクセルがあるので、そのエクセルはスタートアップに入れております。 実際にはそのエクセルの中でマクロを実行するのですが、スタートアップではエクセルが立ち上がるだけで、マクロまで自動で実行してくれるものではありません。 エクセルが立ち上がると同時に指定のマクロプログラムが走るように…なーんてことができるのでしょうか?? どなたか教えてください。よろしくおねがいします。

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

    今までオートフォーマットで検索していたのですが,一つの列に存在するデータが多量になったため,マクロを使った検索としたいです。 検索の方法として,「コンボボックス」で選択したデータを検索したいと考えています。 現状は以下の通りです。 ○検索元となるデータは,1つのSheetにまとめてあります。 ○「コンボボックス」で指定したいデータは4つあります。 ○検索元のSheetの,D列が文字列,E列が数字,F列が文字列,G列が数字となっています。 この,D列~G列の中で,「コンボボックス」4つで指定したデータを別のSheetで表示させたいと考えています。 エクセルは,表計算やグラフならある程度使いこなせるのですが,マクロは全くの素人です。 自分の力で解決しようと,色々試しましたが無理でした・・・ お手数をお掛けしますが,どなたか知恵を授けてください。 よろしくお願いします。

専門家に質問してみよう