[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルの表示形式』(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
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については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
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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.