advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 78 for 表示形式 数値 通貨 (0.011 sec.)
表示形式 (6900), 数値 (16331), 通貨 (231)
[[20120305225341]]
#score: 11548
@digest: 47a3ffeb6f5adf8d92cdd71b37542063
@id: 58005
@mdate: 2012-03-07T02:00:35Z
@size: 6836
@type: text/plain
#keywords: ルc2 (4890), バナ (4774), 桁表 (4720), ナナ (4571), 示書 (4147), ル領 (3594), 通貨 (3504), 力文 (3073), とa2 (3011), enableevents (2094), ichinose (2066), イベ (1855), に0 (1694), ルa2 (1649), cells (1526), ベン (1519), ルa1 (1457), 示形 (1360), 表示 (1287), 書式 (1150), 数点 (1109), 領域 (1047), 入力 (1033), 形式 (1018), 小数 (992), 発生 (924), と入 (914), コー (882), セル (827), application (817), target (813), みか (788)
表示形式どおりに表示させるには?』(はなまる)
A B C D 1 りんご みかん バナナ 2 0.1 0.10 0.100 この様な表があり(みかんとバナナはセルの表示形式にてこの様な表示) A1 に りんご と入力すると A2 に 0.1 みかん と入力すると A2 に 0.10 バナナ と入力すると A2 に 0.100 と表示させたいのですが方法が分かりません。 どなたかお教え下さい。宜しくお願いします Excel2003,WindowsXP 作成したマクロです Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Dim c As Long Cells(2, 1).ClearContents For c = 2 To 4 If Cells(1, 1) = Cells(1, c) Then Cells(2, 1) = Cells(2, c) End If Next c Application.EnableEvents = True End Sub ---- はなまるさんが、何がわかっていて、何がわからないのか が 提示された内容からは理解できません。 まず、 >みかんとバナナはセルの表示形式にてこの様な表示 セルB1には、りんご と入力されていて、セルB2には、0.1という数値が入っていて、 このセルB2の書式の表示形式は、 通貨の小数点1桁表示(¥マークなし)に設定 セルC1には、みかん と入力されていて、セルC2には、0.1という数値が入っていて、 このセルC2の書式の表示形式は、 通貨の小数点2桁表示(¥マークなし)に設定 セルD1には、バナナ と入力されていて、セルD2には、0.1という数値が入っていて、 このセルD2の書式の表示形式は、 通貨の小数点3桁表示(¥マークなし)に設定 一例ですが、上述のような設定がされていれば、はなまるさんの記述されたような 表示が何も入力されていないシートに実現できます。 問題は、ここからですね!! > A1 に りんご と入力すると A2 に 0.1 > みかん と入力すると A2 に 0.10 > バナナ と入力すると A2 に 0.100 >と表示させたいのですが方法が分かりません。 ↑このセルA1にみかんと入力した場合、セルA2に反映したいのは、 みかんに該当するC1の真下のセルC2の書式だけですか? それとも書式を含めたセルそのものをA2に設定したいのか? コードからみると、値も反映させたいのかなあ とみえなくもない ですが・・・。 提示されたコードにて、 例えば、セルA1に りんご と入力するとどうなりますか? また、 >Option Explicit >Private Sub Worksheet_Change(ByVal Target As Range) msgbox "とりあえず、イベントは発生しています" > Application.EnableEvents = False > Dim c As Long > Cells(2, 1).ClearContents > For c = 2 To 4 > If Cells(1, 1) = Cells(1, c) Then > Cells(2, 1) = Cells(2, c) > End If > Next c > Application.EnableEvents = True >End Sub 提示されたコードに msgbox "とりあえず、イベントは発生しています" を付け加えて、同じように セルA1に りんご と入力するとどうなりますか? 上記の趣旨のメッセージが表示されますか? まず、ここまで確認してください。 ichinose ---- ichinoseさん ご返信有難う御座います 表示形式に関しては仰るとおりです セルA1に りんご と入力すると A2には 0.1 と表示されます MsgBox には とりあえず、イベントは発生します と表示されます 行いたい事はA1に、みかん と入力すると A2に 0.10 A1に、バナナ と入力すると A2に 0.100 と表示させたいのです (現在はみかんもバナナもA2には 0.1 と表示されてしまいます) 反映させたいのは、値と書式です If〜End Ifの部分を If Cells(1, 1) = Cells(1, c) Then Cells(2, c).Copy (Cells(2, 1)) End If と、コピーする事も考えましたが 実際に使用する場合 A2には "Max" & Cells(2,2) や Cells(2,3) & "〜" & Cells(2,3) 等の表示をさせたいため、たんなるコピーでは出来そうに無く なにか方法は無いものかとの思いでご相談させてもらっています 宜しくお願いします (はなまる) ---- >MsgBox には とりあえず、イベントは発生します と表示されます では、所定のモジュールにコードが書かれていることが確認できました。 まず、セルA2の書式の表示形式を文字列に変更してください。 又、配置の横位置を右詰めに設定してください。 それから、提示されたコード >Cells(2, 1) = Cells(2, c) Cells(2, 1).Value = Cells(2, c).text と変更してください これで作動はします。 でも、他にも問題があります。 一見すると、わかりづらいですが、 このプログラムA1にみかんと入力しなくても・・・、 例えば、セルZ1に123と入力しても、A1にみかん と既に入力してあれば、 A2に値を設定しています。 いまのところ、大きな問題はなさそうですが、内容によっては、 不具合の原因になります。 A1に何かが入力されたときのみ値を設定するコードに変更してください。 >Private Sub Worksheet_Change(ByVal Target As Range) ヒントは、このTargetです。これが何なのか 調べてみてください。 ichinose ---- 横から失礼。 ichinoseさんからも指摘あるように、どうも説明がよくわからないところもあるね。 そのあたりの説明をきちんとしてくれるのを待ったほうがいいんだろうけど、 以下のコードは、 A1にみかん、りんご、バナナのいずれかの文字列が入れば、B1〜D1の該当の列の2行目の数値を「その書式とともに」A2に転記するコード。 ichinoseさんから、様々なポイントで、(はなまる) さんが、自分で考えてみるような指導中でもあり フライイングなのかもしれないけど、以下のような観点でコードを参考にしてもらえればと。 ・通常はChaneイベントでは、対象とするセルの変更時のみに処理する。 いろんなやりかたがあるけど、変更のあったセル領域(Target) と、処理対象のセル領域(あるいはセル)の Intersect で調べることが多い。 ・シート上のセル領域での文字列の検索は、アップされたコードのように、ループで調べる方法も、もちろんありだけど そのほか、Findメソッドや、シート関数のMatchを使うことのほうが多いかな。 以下の例ではMatchを使っている。 ・値と表示書式の転記も様々な方法がある。以下では、値、表示書式を、それぞれコードで転記。 他にはコピー->形式を選択して貼付け「値と数値の書式」でも。(もちろん、コードで) また、背景色他、何から何まで、そのままコピーしていいのならコードでコメントアウトしたコピーでもいいね。 Private Sub Worksheet_Change(ByVal Target As Range) Dim txt As String Dim z As Variant 'もしA1以外の変更であれば無視 If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub txt = Range("A1").Value '入力文字列を取得 z = Application.Match(txt, Range("B1:D1"), 0) '入力文字列の検索 Application.EnableEvents = False 'イベント連鎖の抑止 If Not IsNumeric(z) Then Range("A2").ClearContents '見つからなければA2をクリア Else z = z + 1 '見つかったセルの列番号補正 '当該列の値と表示書式のコピー Range("A2").Value = Cells(2, z).Value Range("A2").NumberFormatLocal = Cells(2, z).NumberFormatLocal 'もし表示書式のみならず、全てをコピーするなら、上の2行にかえて以下でも。 ' Cells(2, z).Copy Range("A2") End If Application.EnableEvents = True End Sub (ぶらっと) ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201203/20120305225341.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97035 documents and 608021 words.

訪問者:カウンタValid HTML 4.01 Transitional