『セルの表示形式』(muku) こんにちは! よねさんのVBA を勉強していますhttp://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_numberformatlocal.html Private Sub Worksheet_Change(ByVal Target As Range)   Dim unit   Dim myVal   Dim i As Long     If Target.Count <> 1 Then Exit Sub     If Target.Column = 2 And Target.Row > 1 Then       myVal = Range("H1", Range("H" & Rows.Count).End(xlUp)).Resize(, 2).Value       For i = 1 To UBound(myVal)         If myVal(i, 1) = Target.Offset(, -1).Value Then           unit = myVal(i, 2)           Exit For         End If       Next i       unit = "\#,##0" + """" + "/" + unit + """"       Target.NumberFormatLocal = unit     End If End Sub これを実行するとA列に Sub rei19_01()   Range("A1:A3").Value = 1234.5   Range("A1").NumberFormatLocal = "#,###.#"   Range("A2").NumberFormatLocal = "[緑]#,###.#"   Range("A3").NumberFormatLocal = "[DBNum1][赤]#,###.#" End Sub この部分が入ってきます。 なぜこうなるのでしょうか? お教えください。手間のかかる初心者ですみません < 使用 Excel:Excel2013、使用 OS:Windows8.1 > ---- もしかしてPrivate Sub Worksheet_Change(ByVal Target As Range) のコードを 標準モジュールに貼り付けていませんか?シートモジュールに貼り付けてください。 違っていたらすいません。 (se_9) 2014/11/13(木) 11:01 ---- シートモジュール(Sheet2)に貼り付けてもA1:A3には下記が実行されてしまいます なぜでしょうか?標準モジュールが張り付いてしまっています。そしてB列は変化しません Sub rei19_01()   Range("A1:A3").Value = 1234.5   Range("A1").NumberFormatLocal = "#,###.#"   Range("A2").NumberFormatLocal = "[緑]#,###.#"   Range("A3").NumberFormatLocal = "[DBNum1][赤]#,###.#" End Sub よろしくお願いします (muku) 2014/11/13(木) 14:40 ---- マクロの実行ボタン押してませんか?シートモジュールの方は通常のマクロと違い 上記コードの内容ではB列のセルに変化があった時のみマクロが動きます。 マクロの実行ボタンを押さずB列に数値を入れてみてください。 (se_9) 2014/11/13(木) 14:48 ---- ありがとうございます。すべてマクロの実行ボタンを押していました(VBAの中の実行ボタン) Private Subはシートモジュールにコードを書かなくてはいけないことも知りませんでした すべて標準モジュールでいいと思っていました。標準モジュール、シートモジュール、Classモジュールの使い方をもっと理解しないといけないですね 本日はサンプルをやりながらいろいろ検索もしていました VBAについてはhttp://officetanaka.net/excel/index.htmこのサイトがわかりやすく説明されていますね マクロとVBAは違うことそしてVBAの基本をもっと知らないとだめだとお痛感しています いろいろご教授ありがとうございます (muku) 2014/11/13(木) 15:49 ---- こんにちは。 解決したのでもう見ていらっしゃらないですかね。   VBAも含めてExcel全般を勉強するなら、こちらのサイトもお勧めですよ。 http://www.asahi-net.or.jp/~ef2o-inue/top01.html 特にデバッグの仕方なども丁寧に説明してあるので、ぜひ参考にしてください。 (めいぷる) 2014/11/13(木) 16:10 ---- >マクロとVBAは違うこと こんなのが定説になると困るなあ。 同じと思ってくださいよ。 何の為に区別するんですか? 今のエクセルにとっちゃ「マクロ」なんて死語同然なんです。 古いことを色々知っている人間が惰性で使っているだけです。私もその一人ですけど。 あと、この記述は違和感あります。 >unit = "\#,##0" + """" + "/" + unit + """" 文字の連結に「+」なんて使わないでください。 加算かと思っちゃいます。「&」を使ってください。 またそれは、これと同じことですよ。           unit = "\#,##0""/" & unit & """" (半平太) 2014/11/13(木) 16:21 ---- 皆様ありがとうございます。まだまだ知らないことばかりでやらなければいけないことがいっぱいです。 ただ今やりだしていろいろなコードの記述方法が理解できていないのが本音です。 たとえば下記のようなコードは何をもって作っていくのが分からないです そのようなことをどうやって理解していけばよいのでしょうか 変数にDimを使うことはわかりますが・・・ 理解できる方法を教えてほしいです。慣れることなのでしょうか このような時はどうしてこのようにに記述する説明があれば理解できると思うのですが 馬鹿ですみません!!習得する方法は???? Sub rei20_3b() Dim c As Range Dim i As Long Dim F1 As Long, F2 As Long   For Each c In Selection     c.Font.ColorIndex = xlColorIndexAutomatic     For i = 1 To Len(c.Text)       Select Case Mid(c.Value, i, 1)         Case "「"           F1 = i         Case "」"           F2 = i           c.Characters(F1 + 1, F2 - F1 - 1).Font.ColorIndex = 3         End Select     Next i   Next c End Sub (muku) 2014/11/13(木) 17:01 ---- 先に紹介した以下のサイト 「Excelでお仕事」http://www.asahi-net.or.jp/~ef2o-inue/top01.html で勉強して下さい。 左側のメニューに「VBA基本」「VBA応用」とありますので、まずは基本から 一通り読まれることをお勧めします。 今すぐやりたいことがあっても、"急がば回れ"です。 「VBA基本」の中に「自動記録(記憶)から始める」という章があります。 大抵は、やりたいことを日本語で組み立て⇒マクロの自動記録⇒自動記録されたものを修正 こんな手順で作っていきます。 また、「仕様要件からコードの組み立てを考える」という章があります。 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_160.html "この章は、少しVBAをカジり始めた方に読んでいただこうと作成しました"と書かれていますが、 自分のやりたいことをExcel君にやってもらうために、どのように考えて組み立てるかということに ついて書かれています。 また、ネットなどで見つけたサンプルコードで分からないところは、まずヘルプを読んで下さい。 (めいぷる) 2014/11/13(木) 17:13 ---- 他人が作ったコードを理解する早道は、使っている単語を片っ端からググる事です。 たとえば、今回のマクロならば、「For Each c In Selection」このあたりが判らないとします。 Dim は変数宣言である、とは理解しているので、c というのは変数名だ、任意に付けた名前だ、と判るでしょう。 なので、キーワードからcは抜きます。 次に、Excel VBAのコーディングなのだから、対象を絞るために、これも追加してググりましょう。 「For Each In Selection excel vba」こんなキーワードで検索し、出てきたページを順番に見ていきましょう。 一字一句、読む必要はありません。簡単そうで判りそうだな、と思ったところを読んでみてください。 ベテランが10カ所くらい調べて作成するものを、初心者なら100カ所くらい調べる必要があるとします。 ここで「判らない!」と言う場合、実は100カ所のうち、2,3カ所くらいしか見てなかったりします。 ベテランでも10カ所は調べるのに、2,3カ所で判るわけがないですよね。 「初心者だから判らない」のではなく、「初心者なのに、判るまで調べきっていない」という場合が多かったりします。 「馬鹿だから判らない」なんてことはありません。最初は知らないのが当たり前です。判らなかったら調べれば良いのです。 (???) 2014/11/13(木) 17:32 ---- ありがとうございます。参考にさせていただいてブックマークバーに配置いたしました。いろいろ勉強しなければいけないことがいっぱいありますが今月は先週までマクロの基本をやっていました(本当の基本です) 今週からVBAをやりだしましたが途中で悩んでしまいました。上記サイトを参考にしてやらせていただきます ありがとうございました。 (muku) 2014/11/13(木) 18:22