[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『参照するセルによって数値を負の値に返す』(〃^▽^〃姫)
スレの意味がわかりづらいかもしれないですが、A1のセルに何かを入力する事によって (この場合は日付けなんですが) それに関連するセルに数値を入れた場合、負の値を返すような仕組にしたいのですが、 そんな関数は組めないでしょうか?
>それに関連するセルに数値を入れた場合 B1に数値を入れるとB1の値を負の値でと言う事ですか。VBAでないと無理ぽいですね。(ケン)
今は下記のように強引に0から引くことでマイナス表示にしています。
金額 = ActiveCell.Value
ActiveCell.Formula = "=0-" & 金額 & ""
本当はもっといいやり方があるとは思うのですが、まだまだ勉強不足で思いつきません。
こちらもあわせて教えていただければ・・と思います。どうぞよろしくお願い致します。(よ)
単純に-1を掛ければ良いような気がしますが、間違いでしたらごめんなさい。(ケン)
「負の値を返す」というのは、ゼロから引き算した数字ですか? 単純に「マイナス」の付いた数字にするということではないのですか? 「マイナス」を付けるだけでしたら、書式設定の「ユーザ定義」で「"-"G/標準」と指定すれば できるのですが・・・・(スー)
スーさんに質問ですが >A1のセルに何かを入力する事によって とあります。表示形式では難しいと思いますが、何か方法があるのでしょうか? あれば是非教えて頂ければよ思います。(ケン)
(〃^▽^〃姫)さんの質問からだいぶそれてしまったようですみません。(よ)
(〃^▽^〃姫)さんの意図する所が今一、判りませんので外れていると思いますが 初心者の私がごく単純に考えるとA1に関連するセルをA2とした場合、A2の書式設定 で[数式が][=A1=""]として書式で文字色を白に設定して、後はスーさんの御提案の A2のユーザー定義で「"-"G/標準」と指定すれば、一応は出来ますけど・・・。 勿論、こんなんじゃダメですよね!(ヤー坊)
みなさんありがとうございます。 上手く説明できなくて&遅くなってしまって。 ごめんなさい。
A
1 2 55 @以下のセルに正の数値を入力する 3 20 4 10 5 12
A
1 1/1 ←Aこのセルに入力する 2 −55 BA1に入力した事によって数値が負の値に返る 3 −20 4 −10 5 −12 A1に入力と言う意味が説明しづらかったので 逆説明みたいになりましたが。すみません。こういうことなんですが。 空欄のままでは正の数のままで表示したいのです。 (〃^▽^〃姫)
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range Dim s As String
If Target.Address = "$A$1" Then For Each rng In Range("A2:A5") s = rng.Value If s <> "" Then If Left(s, 1) = "-" And Range("A1").Value = "" Then rng.Value = s * -1 ElseIf Left(s, 1) <> "-" And Range("A1").Value <> "" Then rng.Value = s * -1 End If End If Next rng End If End Sub
こんなかんじでいいんでしょうか もう少しいい方法がありそうですが (りな)
入力はA列でB列に値を変換表示では駄目ですか? B2に=IF($A$1="",A2,-A2) B3以下はB2をコピー、 これはA1が空白ならB2はA2のままで、空白でなければ-A2となります。 A1とせず$A$1ではコピーした場合A2A3・・・とかに変化せず必ずA1を参照させる 為です。 入力したセル自体をマイナスに変えるのVBAしかないですね、 私の考えるVBAは「せこい」です 上記の式を別のシートで計算して貰い、 マクロを動かすと値のみを貼り付けるそんなマクロになります「私は素人、無理せず」。 独学ですのでかなり低レベルです(橋の下から)
橋の下からさん、さっきから何度も編集してますね。
>私の考えるVBAは「せこい」です
VBAはきらいなんでしょうか?もしかしてわたしの書き込みが気に入らなかったとか? VBAも結構面白いんでやってみてはどうでしょう。などといいながらわたしも本気で やるつもりないんですけどね (りな)
(りな)さん ありがとうございます。 本格VBAは始めてなので早速トライしてみましたが >ElseIf Left(s, 1) <> "-" And Range("A1").Value <> "" Then ここの所でエラーがでるのですが Thenの所が青くなってコンパイルエラー 修正候補:ステートメントの最後・・ と、エラー表示が出ます。 自動記録以外では作った事がないので 是非挑戦してみたいのでおねがいします。 書き込んだ後どういう手順でマクロを働かせるのかも 恥ずかしいけれどわかりません。 教えていただけないでしょうか? (〃^▽^〃姫)
(橋の下から)さん ありがとうございます。 作業セルを使わないで反映させたかったので 思わずA2に=IF($A$1="",A2,-A2)なんて入れてしまって 循環してしまいました・・・・・・笑ってください。 (〃^▽^〃姫) こんなレベルの私ですがよろしくお願いします。
シートモジュールにコピーしてください Worksheet_Change イベントなんで セルの内容を変更したときに自動で実行されます
エラーについてはわかりません。上記マクロをそのままコピーしているんですよね?
橋の下からさん 冷静によく読むと、わたしは勘違いをしていたようです。ごめんなさい (りな)
りなさん案内の通り実行すれば、希望の操作実行がされます。 「シートモジュールにコピーしてください ・・・・・・・」 Private Sub Worksheet_Change(ByVal Target As Range)
End Sub の範囲選択コピーし、ワークシートのシート見出しを右クリックし、メニューの「コードの表示」を選択し、 Ctrl+Vで貼り付けてワークシートに戻ります。 結果はどのようになりましたか?りなさんに連絡して下さい。 (シニア)
余分な作業セルを作成方法でしたか、やはり・・・ わたしのレベルでは無理でした。
りなさんへ・・・ いえいえ、わたしの次元の低いレベルではVBAはまだ作成出来ません。 ツールのマクロの記録から、出来上がったのを使ってる次第です。 やっとMsgbox「のみ」を追加して、実行させるかキャンセルさせるかを 選択させる方法が判った程度です。 書き直しが多かったのは文書がへたで再プレビューのはずが更新してしまってて 今の段階ではりなさんのVBAも読めない状態ですので勉強した時にはお願いいたします。 (橋の下から)
こんにちは (りな)さんごめんなさい 貼り付ける場所を間違えていました。 出来ました。ありがとうございました。 Microsofut Excel Objectsなのですね。 すごく初歩的なことがわからなかったのですが 標準モジュールに貼付けをしていました。 以前自動記録で組んだファイルを見たら そこに書き込まれていましたのでそうしてしまったのですが こんな初歩的なことも知らないで エラーがでたなんて言ってしまってすみません。 マクロには凄く興味をもっていたけれど 難しくて以前買った本もホコリをかぶったままでいます。 もう一度手にとって見て勉強をしてみます。 前よりは少し意味がわかるようになっているような気がします。 ありがとうございました。 (〃^▽^〃姫)
質問者の方は解決された様ですが、同じような疑問が有るのでこのスレをお借りして お聞きしたいんです。 私もマクロは全く判らないのですが、この掲示板で良くマクロでの回答が有り試して 見る事が有るんですが、その際に何処にコードを貼り付ければ良いのかが判りません。 回答の中に良く挿入から標準モジュールに貼り付けてとか書かれていますが、今回の 場合は違うようですしVBEを開いた時、左側にMicrosoft Excel Objectと有って その下にSheet1,Sheet2〜,ThisWorkbookとか書かれていますが何処へ貼り付けたら 良いのか、その区分け方を教えて欲しいんです。 本当に基礎の基礎だと思いますが宜しくお願い致します。(ヤー坊)
Sheetモジュール、ThisWorkbookは、マクロを実行するイベントにより使い分けます。 標準モジュールは、汎用のマクロを記述することが多いです。 Sheetモジュール:シート上に配置したコントロールのマクロ、そのシートのイベント ThisWorkbookモジュール:ブックのイベント。ブックの Openなど。
マクロの基礎については、こちらが参考になると思います。 http://www.sanynet.ne.jp/~awa/excelvba/kouza.html (INA)
(INA)さん、どうも有り難う御座います。 なんせ用語の意味さえ判らないレベルなので、お教え戴いたHPを閲覧して基礎から勉強 したいと思います。これからも宜しくお願い致します。(ヤー坊)
(〃^▽^〃姫)さま。もう皆様からの助言のマクロで問題が解決したようですが、 もし「マイナスを付けて負の値にする」というところを「赤字」で表示しても よいのであれば、「書式」⇒「条件付き書式設定」を指定することで解決できます。 今後の参考にこんな方法もあることを試してみて下さい。 A2のセルで条件を「数式が」にして「=$A$1<>""」を入力し「書式」のフォントを 「赤」に指定してOKをクリックします。 その書式をA3〜A5のセルにコピーすればできあがりです。(スー)
(スー)さんありがとうござます。 条件付書式のアイディアは早速トライさせて上手く表示する事が出来ました。 けれど、赤文字の方が識別しやすくて良いのですが、 値は負として返したいのです。 ・・・マクロですか・・・ 教えて頂いたマクロは何とか成功したのですが そこから躓いています。 というのも、サンプルのセル番地で作って頂いたマクロを 自分の帳票のセル番地に置き換えてもマクロが働いてくれないのです・・・ マクロのアレンジってそんな単純なものではないのでしょうか? 教えてもらったサイトを見たり、本を読んでもう少し勉強をしてからと思っていましたが (スー)さんが私のスレを復活してくださった事に背中を押され 再度、みなさんにご教授をお願いしたいのですが、宜しくお願いします。 (〃^▽^〃姫)
「自分の帳票のセル番地」というのはひとつのセルでしょうか?それとも複数のセル範囲ですか どんな感じに変更してますか? (りな)
(りな)さん、ありがとうございます。 $AF$4→AF5:AF36 ・ ・ ・ ・ $AU$4→AU5:AU36 こんな書き表し方でわかるでしょうか? 早速返事を頂いて嬉しかったです。 お願いします。 (〃^▽^〃姫)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range Dim s As String
With Target
If .Row <> 4 Then Exit Sub
If .Column >= 32 And .Column <= 47 Then
For Each rng In Range(Cells(5, .Column), Cells(36, .Column))
s = rng.Value
If s <> "" Then If Left(s, 1) = "-" And Cells(4, .Column).Value = "" Then rng.Value = s * -1 ElseIf Left(s, 1) <> "-" And Cells(4, .Column).Value <> "" Then rng.Value = s * -1 End If End If
Next rng
End If
End With
End Sub
ざっと作ってみましたが、こんなかんじでしょうか? 5〜6分で作り、あまり動かしてないので何か不具合あるかもしれません 勘違いしていたり、疑問などあればいってください (りな)
おはようございます (りな)さん、ありがとうございました。 できました。やっぱり数式みたいに単純に入れ替えたら使えるという 次元ではないことが、中味を見比べて一目瞭然でした。 マクロの勉強にますます興味が湧いてきました。 (〃^▽^〃姫)
ちょっと美人でマクロ仲間の姫さん、がんばんなはれや。アンタの大きな顔見たら何か 書き込まな気ぃすまん様になってきまんねんで、えぇ。 いま、仕事が忙しさかい手ほどきでけしまへんけど、りなさんは私よりはるか上空に住 まいを構えてますさかい、しっかり噛みつきなはれや。草葉の陰(イッ!)から応援し てますさかいな。 何で美人やいう事知ってるかって? 愛想でんがな、ア.イ.ソ..... (おいぼれ弥太郎)
お久しぶりです、弥太郎さん! 励まし、ありがとうございます。 しっかり噛み付かせていただきます・・・ あ!刺すのか・・・蠍座の女だから・・・怖! ”マクロ”がんばってみますね! 遅れましたが ”タイガース優勝おめでとうございます!” 今度は日本一ですね! (〃^▽^〃姫)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.