• ベストアンサー

VBA EXCEL 指定数字で表示

VBAで以下のことをするには、どうすればよいでしょうか。 ・D列に 1と入力された場合は、同じ行のF列は9:00と表示 2と入力された場合は、同じ行のF列は10:00と表示 3と入力された場合は、同じ行のF列は11:00と表示 ・ ・ ※但し、以下の場合は、該当の数字が入力されない。 (1)現時間よりも、表示されるべき時間が遅い時間の場合。 →現時間が10:15の場合、3と入力されても11:00と表示されない。 (2)F列に予め、○と入力されている場合、 なにとぞ、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける option base 1 private sub Worksheet_Change(byval Target as excel.range)  dim h as range  dim a as variant  a = array("9:0", "10:0", "11:0") ’1から3  on error resume next  for each h in application.intersect(target, range("D:D"))   if cells(h.row, "F") <> "○" then   if 1=< h.value and h.value <= 3 then  ’1から3   if time >= timevalue(a(h.value)) then    cells(h.row, "F") = a(h.value)   end if   end if   end if  next end sub ファイルメニューから終了してエクセルに戻る D列に1,2,3を記入する。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

回答No.5

「すぐに回答を!」と書いてあるにもかかわらず、質問者からは、すぐに反応がないみたいですね。この質問はもう見ないことにします。

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

下のコード例では、次の条件を全て満たす動作となります。 (1) D 列に小数が記入された場合、それを四捨五入により整数化。 (2)四捨五入により得た整数が -9 以下である場合は何もせず、-8 以上の場合のみ整数と時刻を D・F 列のセルに記入。 (3)現在時刻が 10:15 であり、四捨五入により 3 となる値を D 列に記入した場合、10:00 と 11:00 のいずれもセルには記入せず、何もしない。 Private Sub Worksheet_Change(ByVal Target As Range)   If Intersect(Target, Columns("d:d")) Is Nothing Or Target.Rows.Count > 999 Then Exit Sub   Dim c As Range, t As Double, n As Long   For Each c In Intersect(Target, Columns("d:d"))     With c       If IsNumeric(.Value) And .Value <> "" And Cells(.Row, "f").Value <> "○" Then         n = Round(.Value)         If n >= -8 Then           t = TimeSerial(n + 8, 0, 0)           If t <= Time Then             Cells(.Row, "d").Value = n             Cells(.Row, "f").Value = t           End If         End If       End If     End With   Next c End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.1です。 書き忘れていました。 F列の表示形式は 時刻 にしておいてください。m(_ _)m

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! D列は数値の場合、必ず整数が入るとします。 シートモジュールです。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myTime As Double If Intersect(Target, Range("D:D")) Is Nothing Or Target.Count > 1 Then Exit Sub With Target If IsNumeric(.Value) Then myTime = TimeSerial(.Value + 8, 0, 0) If myTime < TimeValue(Now()) And Cells(.Row, "F") = "○" Then Cells(.Row, "F") = myTime End If End If End With End Sub こんな感じで良いのでしょうか?m(_ _)m

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel関数

    Eccel2003を使用して以下のような入力作業を行っております。 A列~C列のセルに「1~10」いずれかの数字を入力して行きます。 入力パターンは (1)A列だけ入力 (2)A列とB列に入力 (3)A列~C列全てのセルに入力 の3パターンです。 複数の列に数字を入力する場合((2)及び(3))、同じ数字を入力することはありません。 【例】     A B C D  1  5  4  1  2  6  3   1 2  4   2 4 5  ・  ・  ・ このとき、A~C列に一つでも該当の数字(ここでは2と4と5)が入力されていた場合に、 ある文言(30文字くらい)をD列に反映させたいのですが、何か良い関数等ありますでしょうか?    ※ 上記例の場合、1,3,4行目のD列に文言を反映 例の4行目のように全ての列に該当の数字を入力することもあります。 ご教示頂きたく何卒宜しくお願い致します。

  • エクセルで指定した数字を含む検索について

    初歩的な質問で申し訳ございません。 添付のような表があり、現在はA列にオートフィルタをかけて数字下二桁を入力後、ソートがかかった商品表示され、日付の 列に個数の入力を行っています。(A列の番号は20桁位あるので、実際は下4桁で検索しています。) 【現在の作業】 A列にオートフィルタから下4桁入力後に検索→日付の列に個数を入力→また検索 【理想の作業】 ある程度、検索する商品の番号の下4桁をどこかに候補として挙げ、その数字を含む行だけ表示→一気に個数だけ入力 VBAでもマクロの記録でも何かよい方法はございませんでしょうか? イメージとしては、1行目から5行目にあるオレンジのボックスの中に検索したい商品の番号4桁をいくつか入力し、それに該当する商品だけを7行目のA列から検索し、その枠ごとに記載された数字を含む行のみソートされ表示されるようにできると助かります。 どうぞよろしく御願いいたします!初歩的な質問で申し訳ございません。 添付のような表があり、現在はA列にオートフィルタをかけて数字下二桁を入力後、ソートがかかった商品表示され、日付の 列に個数の入力を行っています。(A列の番号は20桁位あるので、実際は下4桁で検索しています。) 【現在の作業】 A列にオートフィルタから下4桁入力後に検索→日付の列に個数を入力→また検索 【理想の作業】 ある程度、検索する商品の番号の下4桁をどこかに候補として挙げ、その数字を含む行だけ表示→一気に個数だけ入力 VBAでもマクロの記録でも何かよい方法はございませんでしょうか? イメージとしては、1行目から5行目にあるオレンジのボックスの中に検索したい商品の番号4桁をいくつか入力し、それに該当する商品だけを7行目のA列から検索し、その枠ごとに記載された数字を含む行のみソートされ表示されるようにできると助かります。 どうぞよろしく御願いいたします!

  • EXCEL2002で、VBAにお詳しい方、お願いします

     初心者の為、基本的な質問ですみません。私の場合、まず初めに、下記に記す、元々ベース(下敷き)となるVBAコードがあって、その変更方法について、お尋ねします。 下記リンクのVBA⇒ANo.5では、A4の4桁の数字を、4行目にあるIn Range("D4:F104")の中から、探してきて、置き換えるのですが、  新たに付け加えて改良したい点 (1)参照セルとなる、4桁数字の入力セルを、これまでのA列、A4,起点から, 他の(1)B列、B4,起点、(2)C列、C4,起点、に変更する際、VBAのどの部分を、どのように変更するのか? 下記のVBAに当てはめ、書いて頂けると、たいへん有難いです。 (2)上記(1)が出来なくとも、同じ1枚のワークシートに、 (1)上記(1)A4⇒⇒⇒D4:F104 の他にも、(2)    G4⇒⇒⇒J4:L104 (3)    M4⇒⇒⇒P4:R104 と、縦長に、3系統、下記と全く同じVBAを更に横に3列並べて、区分して記述する場合、上記と同様に、下記に記すVBAのどの部分を、どのように変更するのか? 下記のVBAに当てはめ、書いて頂けると、たいへん有難いです。 (1)A4⇒⇒⇒D4:F104|(2)G4⇒⇒⇒J4:L104| (3)M4⇒⇒⇒P4:R104 たいへん手前勝手で、都合の良い話ですが、教えて頂けると、非常に有難いです。宜しくお願いします。   ≪元々の、ベース(下敷き)となるVBA≫ QNo.2487806の⇒ANo.5  http://okwave.jp/qa2487806.htmlの発展の質問です。 後残り十数行なのですが、VBAの以下の部分を全て記述すると800字を越えてしまうので、御覧になって、興味を持って頂いたなら、「仮の回答」をください。そこで、直ちに、その「回答の補足」に、残りのVBAを書き込みますので、「正式の回答」を下さい!紙幅が足りない為、説明が舌足らずですが、次回の「回答補足」では、字数に捕われず解り易く書けます。

  • EXCEL2010 VBA 繰り返し処理

    EXCEL2010でVBAを使用してシートを作成しています。 シート1のA1にヘッダ数・A2に項目数を入力します。 VBAのコードを実行するとA1のヘッダ数が1ならシート2のA列には何も表示せず A2の項目数の分だけB列の14行目から数字を入力していきます。 (例)シート1   A1:1   A2:20  の場合はシート2のB14から20行下まで1~20の値を自動入力させる。   シート2   B14:1   B15:2     ↓   B33:20 シート1のA1が2以上の場合はシート2のA14から、シート1のA2の数値分アルファベットを表示させていきます。 (例)シート1   A1:2   A2:10  の場合シート2のA14:A23に「A」を表示させます。(シート1のA2の数分この場合は10行ずつ)               A24:A33に「B」を表示させます。               B列にはアルファベットごとに数字を1~表示させます。   B14:B23 1~10   B24:B33  1~10 シート1のA1が2なのでA・Bを表示 A1が3だとA・B・C A1が10だとA・B・C・D・E・F・G・H・I・JがA2の数字で区切りながら表示される。 このようなコードを書きたいのですが、どなたかご教示お願いします。

  • EXCELで該当数字の羅列から、該当数字をチェックする方法。

    エクセルの関数について質問させて頂きまます。 例えば A列   B列   C列 1行   111 2行   222 3行   333 4行   444 5行   555 6行   666 7行   777 8行   888 9行   999 10行   000 上記のような表があるとして、Dの10行目などにチェック欄を作成して、 そこに、数字を入力する事により、B列の数字の一覧から、 該当したものを、例えばC列に”該当あり”のように表示をさせたいと思っております。 例えば、そのチェック欄(Dの10行目)に”333”と入力すると A列   B列   C列 1行   111 2行   222 3行   333  該当あり 4行   444 5行   555 6行   666 7行   777 8行   888 9行   999 10行   000 このような感じです。 もしくは、該当する行の色を赤や青など他の色に変更する方法でも構いません。 説明が下手で分かり辛いかもしれませんが、どなたか、 このような場合の関数などをご存知の方おりましたら、 ご教授頂ければ幸いです。 どうぞ、宜しくお願い致します。

  • 【Excel365】数字のみの場合に表示させたい

    A列に10桁固定の数字のみ入力されていたらC列に「有効」と表示させる関数をご教示ください。 A列は0から始まる数字もあるため文字列です。 行数は数百行あります。 列の挿入はできません。 よろしくお願いします。

  • すでに入力されている数字で計算をしたい

    数字が入力されている表があります D列E列F列の数字をそれぞれB列の数字で割り算をしたいと考えています 割り算の答えは同じそのセルに上書きするようにします 別のセルで計算した結果を値貼り付けでもってきていたのですが、 マクロで処理できればと考えております 2行目から数字が入力されているのですが、 最終行が決まっておりません。 答えは全て小数点第2位までで表示したいと考えています どなたかご教授いただけますでしょうか よろしくお願い致します

  • excelで数字の羅列から、該当数字をチェックする方法

    excelの関数または条件付き書式について質問させて頂きます。 例えば・・・    A B C D E 1列 4 5 5 4 6 2列 5 6 6 5 4 3列 5 4 5 4 4 4列 6 6 6 5 4 5列 上記のような表があります。 そこでAの5行目などにチェック欄を作成し、 そこに、数字を入力する事により、1列のAから4列のAまでの数字からAの5列に入力した数字に該当したセルを、塗りつぶすか書式を変更させるかのいずれかで表示させたいと考えております。 もし回答頂けたかたのお時間が許すのであれば、その逆に該当から外れた場合に同様にセルが塗りつぶれるか書式が変わるようにするパターンもご教示していただければ幸いです。 可能であればで結構ですのでよろしくお願いします。

  • Excel関数

    Eccel2003を使用して以下のような入力作業を行っております。 A列~C列のセルに「1~10」いずれかの数字を入力して行きます。 入力パターンは (1)A列だけ入力 (2)A列とB列に入力 (3)A列~C列全てのセルに入力 の3パターンです。 複数の列に数字を入力する場合((2)及び(3))、同じ数字を入力することはありません。 【例】     A B C D  1  5  4  1  2  6  3   1 2  4   9 1 3  ・  ・  ・ このとき、A~C列に一つでも奇数が入力されていた場合に、 ある文言をD列に反映させたいのですが、何か良い関数等ありますでしょうか?    ※ 上記例の場合、1,3,4行目のD列に文言を反映 例の4行目のように全ての列に奇数を入力することもあります。 ご教示頂きたく何卒宜しくお願い致します。

  • Excel2003VBA 行の非表示

    お世話になります。 掲題の件で ご相談が御座います。 ある特定の列(連続した4列F、G、H、Iです)が全部「0」だった場合 その行 全体を非表示にするというマクロを組みたいのですが 未熟者の為 どのようなコードを記述したら良いのか分からず困っております。 どなたかご教示いただけませんでしょうか。 F、I列は数式により「0」と表示されています。 G、H列は値で「0」になっております。 表全体は600行ぐらいまでですが、今後増える可能性があります。 (増えても800行までは行かないと思います) 説明不足等が御座いましたら ご指摘ください。 宜しくお願い致します。

このQ&Aのポイント
  • 業務用スキャナーと一般のスキャナーの違いについて説明します。
  • 業務用スキャナーは大きさが一般のスキャナーよりも大きいです。
  • 業務用スキャナーは高速で大量の文書をスキャンすることができます。
回答を見る

専門家に質問してみよう