• ベストアンサー

EXCEL VBA 指定した数字ごとに表示

http://okwave.jp/qa/q8818467.html 上記をこちらで教えていただき、入力してENTERすると思ったとおりの表示がされるのですが、別のセルからコピーするとうまくいきません。 原因はなんでしょうか? よろしくお願い致します。

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

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

正しくないデータが記入されているようなので、少し手直しする事にします 手順: シート名タブを右クリック、コードの表示を選ぶ 現れたシートに記載されている内容を全て消去し、改めて下記をコピー貼り付ける option base 1 private sub Worksheet_Change(byval Target as excel.range)  dim h as range  dim a as variant  a = application.transpose(range("A1:A3")) ’A1からA3に時刻を記入  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 >= a(h.value) then    cells(h.row, "F") = a(h.value)   end if   end if   end if  next end sub

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

その他の回答 (1)

回答No.2

以下は、 http://okwave.jp/qa/q8764434.html の質問を元にしました。 何か、同じような質問と、同じようなパターンのコードが、数ヶ月に渡って続いているようです。 もう少し考えて、丁寧に質問したほうがよいと思いますね。ポイントを押さえたほうがよいです。エラー処理には、ユーザーの任意の値ですから、こちら側では、想像しにくいものがあります。 >a = array("cell(1,1)", "cell(1,2)", "cell(1,3)")みたいなイメージです これは、よく分からないですね。セルを参照するのなら、配列など必要はないはずです。 '//単一セルを使う場合 Private Sub Worksheet_Change(ByVal Target As Range)  With Target  If .Column <> 4 Then Exit Sub 'D列  If .Count > 1 Then Exit Sub '複数のセルをまたいだ場合は、不可  If .Value = "" Then .Offset(, 2).Clear: Exit Sub 'D列の数字を削除すれば、F列も消える  If .Value < 1 Or .Value > 3 Then Exit Sub '入力は1から3まで  If .Offset(, 2).Value = "○" Then Exit Sub  If TimeValue(Cells(.Value, 1).Text) > Time Then Exit Sub  Application.EnableEvents = False '再帰を防ぐ   .Offset(, 2).Value = Cells(.Value, 1).Text '2列先にコピー・ペーストする  Application.EnableEvents = True  End With End Sub '// >別のセルからコピーするとうまくいきません。 どこからどこへ、何をコピーしたのか分からないので、私には、よく意味が理解できません。 もしかしたら、D列に入力をコピーで貼付けしたという意味なら、上記のコードが大幅に変わってきます。 '//複数のセルを一度に使う場合 Private Sub Worksheet_Change(ByVal Target As Range)  Dim c As Range  If Target.Column <> 4 Then Exit Sub 'D列  For Each c In Target   If c.Value <> "" Then 'セルを消したり、空だった場合    If c.Value >= 1 And c.Value <= 3 Then '入力は1から3まで     If c.Offset(, 2).Value <> "○" Then      If TimeValue(Cells(c.Value, 1).Text) <= Time Then       Application.EnableEvents = False '再帰を防ぐ       c.Offset(, 2).Value = Cells(c.Value, 1).Text       Application.EnableEvents = True      End If     End If    End If   Else    c.Offset(, 2).Clear '2列先のセル内容を消去   End If  Next c End Sub '//

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

関連するQ&A

  • エクセルで指定した数字以下の数字を抽出して抜き出す

    エクセルで指定した数字以下の数字を抽出して抜き出したいです 例としては A列 B列 いぬ 1 ねこ 2 うし 3 とら 1 はと 2 この表から空いているセルに任意の数字を入力して それ以下の数字を別のセルに抽出したいです たとえば2を入力したら いぬ 1 ねこ 2 とら 1 はと 2 このような結果を別のセルに抽出したいです オートフィルターとマクロは使わない方向でお願いします 似たような質問としては下のURLでしたが http://okwave.jp/qa/q3200952.html?from=recommend これでは指定した数字と同じものしか抽出出来なかったので質問させていただきました

  • エクセルで数字10が1に変わる。どうして?

    セルに10と入力し、エンター押して10と表示されたのに、もう一度エンター押して改行したら、1に変わってしまう。11と入力するとエンター2回しても11になるのに。どうして?教えてください。

  • EXCELの数字入力後の表示について

    EXCELにてセルに数字を入力、エンターを押すと表示される桁数が1/100になってしまいます。(例)2000入力すると、20と表示される。)何か対処法はありますか?お願いします。

  • エクセルで数字の入力

    エクセルで、セルに「9092123800037414」と入力して、Enterを押すと、「9.092+15」 と表示され、ツールバー(関数の挿入ボタンの右の部分)には、「9092123800037410」と表示されてしまいます。 最後の0を消して、4に入力しなおしても、Enterを押すと、同じようになります。 セルの書式設定で、数値、の表示にしても最後が0のままの表示になってしまいます。 なぜそうなるのでしょうか?またどうすれば、正しく入力したままの数字が確定されるのでしょうか?

  • Excel 全角数字が半角数字に変化してしまう

    Excel 2003 です。 文字列に設定してある、文字より充分大きいセルに 全角数字5を入力して (a)Enterキーを押すと (b)Enterキーを押してから矢印キーを押すと (a)又は(b)の場合 全角数字5が半角数字5に自動的に変化してしまうことがありました。 (「・・・ありました」ということで、いつもそうなるということではありませんが。) なにか設定を変えたこともありませんし、 どのようなときその現象がでるのかも把握できていません。 Q1. このような変化を防ぐ方法を教えてください。 Q2. 「おかしいな?」と思って再入力を繰り返しているとセルの左上の隅に 三角マークが表示されるようになりました。 この三角マークの意味と表示させない方法を教えてください。

  • 再度の質問です。エクセル 列の数値の表示

    下記の質問にて回答を得て締め切りました。 http://okwave.jp/qa/q7411807.html 回答いただいた「セルの書式設定→表示形式→標準として下さい」を実行しますと、 小数点以下の桁数は任意に表示されます。 ただ、例えば2.10と打ち込んでも2.1となってしまいます。 (2.11と打つと2.11と表示されます) 出来ましたら、キーボードからの入力通りに表示させる方法を再度教えていただければと思います。 よろしくお願いします。

  • Excelでの数字の表示

    セルA1に Number セルB1に 0010   と入力されていて、 セルC1に Number0010 と表示させたいとき、どのような数式を使えばよいのでしょうか。 B1の表示形式をユーザー定義で 0000 としても、 =A1&B1 とすると、 Number10 と表示されてしまいます。 よろしくお願い致します。

  • INDIRECT関数で指定のセルを表示したい

    こちらの質問でINDIRECT関数を使って指定のセルを指定できました。 http://okwave.jp/qa/q6920409.html だたエラーになってしまします。 おそらく1つ1つ値の更新をしないといけないと思います。 これではかなり手間なのでINDIRECT関数を使って指定のセルを自動で表示できませんか? 同じフォルダ内のブックを使います。

  • word上の数字(111097801829)をコピーしてエクセルのセル

    word上の数字(111097801829)をコピーしてエクセルのセルに貼り付けるとそのままの数字が入力されるのですがエンターをクリックすると数字が(1.11098E+11)に変わります。なぜ?でしょうかそのまま表示させるにはどうすれば良いのでしょうか?

  • Excel VBA-改行について

    Excel VBAで、UserFormのTextBoxに入力されたものをワークシートに表示させたいのですが、 TextBox内で、「Enter」キーが押されたら改行する方法と TextBoxで入力された通り(改行等)にワークシートのセルに表示する方法を どなたか教えて下さい。

専門家に質問してみよう