- ベストアンサー
EXCEL VBA 指定した数字ごとに表示
- 1から3までの数字を入れた場合に、9:00から11:00と表示するソースコードを書きます。
- a=array()の部分をセルの参照にしたい場合は、a=array("cell(1,1)", "cell(1,2)", "cell(1,3)")のように書くことができます。
- Worksheet_Changeイベントを使用して、D列に入力された数字が1から3の範囲内でかつセルFに○がない場合に、時間の表示を行います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 たびたびごめんなさい。 投稿後気づきました。 >a = array("cell(1,1)", "cell(1,2)", "cell(1,3)")みたいなイメージです。 の部分で勘違いしていました。 D列のChangeイベントですので、結局A1~C1セルの範囲の3個だけですね。 ↓のコードに変更してください。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("D:D")) Is Nothing Or Target.Count > 1 Then Exit Sub With Target If IsNumeric(.Value) And .Value > 0 And .Value <= 3 Then '←変更★ If Cells(.Row, "F") <> "○" Then Cells(.Row, "F") = Cells(1, .Value) '←変更★ Cells(.Row, "F").NumberFormatLocal = "h:mm" End If End If End With End Sub どうも失礼しました。m(_ _)m
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
>・a = array()の部分について、直接書くのではなく、セルを参照する たとえばA1からA3の3つのセルを参照するには a = application.transpose(range("A1:A3")) とします。 「具体的に」どこのセルを参照したいのかによって、違う書き方が必要になります。まず回答した通りに作成し動作を確認してから、改めてあなたのエクセルの実際に合わせてマクロを自力で修正してください。 また教わった回答をそのままコピー貼り付けて質問するんじゃなく、あなたが「今実際に使ってるマクロ」をあなたのエクセルからコピーして、正確な情報提供をしてください。今後のご参考に。
お礼
ありがとうございます。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! >a = array("cell(1,1)", "cell(1,2)", "cell(1,3)")みたいなイメージです。 というコトですので・・・ 基本的に他の回答者様がお書きになったコードに手を付けるのは好きではありませんので 別のコードにしてみました。 A列の1行目から何行あっても良いので「時刻」データが入っているとします。 シートモジュールです。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("D:D")) Is Nothing Or Target.Count > 1 Then Exit Sub With Target If IsNumeric(.Value) And .Value > 0 And .Value <= Cells(Rows.Count, "A").End(xlUp).Row Then If Cells(.Row, "F") <> "○" Then Cells(.Row, "F") = Cells(.Value, "A") Cells(.Row, "F").NumberFormatLocal = "h:mm" End If End If End With End Sub こんなんではどうでしょうか?m(_ _)m
お礼
ありがとうございます。 よろしければ、こちらもごらんいただけませんでしょうか? http://oshiete.goo.ne.jp/qa/8819779.html お手数かけます・・