Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8788 / 13646 ツリー ←次へ | 前へ→

【31067】マクロ ホウレンソウ 05/11/11(金) 10:33 質問[未読]
【31069】Re:マクロ ちくたく 05/11/11(金) 10:40 回答[未読]
【31074】Re:マクロ ホウレンソウ 05/11/11(金) 13:43 お礼[未読]
【31089】Re:マクロ ホウレンソウ 05/11/11(金) 15:33 質問[未読]
【31092】Re:マクロ Statis 05/11/11(金) 15:44 発言[未読]
【31100】Re:マクロ ホウレンソウ 05/11/11(金) 16:30 発言[未読]
【31101】Re:マクロ ちくたく 05/11/11(金) 16:33 発言[未読]
【31171】Re:マクロ ホウレンソウ 05/11/14(月) 8:24 お礼[未読]
【31093】Re:マクロ Kein 05/11/11(金) 15:47 回答[未読]
【31102】Re:マクロ ホウレンソウ 05/11/11(金) 16:34 お礼[未読]
【31178】Re:マクロ ホウレンソウ 05/11/14(月) 10:55 質問[未読]
【31181】Re:マクロ Kein 05/11/14(月) 12:06 回答[未読]
【31190】Re:マクロ ホウレンソウ 05/11/14(月) 13:21 質問[未読]
【31191】Re:マクロ Kein 05/11/14(月) 13:30 発言[未読]
【31198】Re:マクロ ホウレンソウ 05/11/14(月) 14:41 お礼[未読]

【31067】マクロ
質問  ホウレンソウ  - 05/11/11(金) 10:33 -

引用なし
パスワード
   質問なんですが、セルに数字を記入した時に
InputBoxがでるようにしたいのですが
そのようなことはできますか?

普段はボタンにマクロを登録していますが、
今回はボタン無しでやれないかということでご質問させて
頂きました。

【31069】Re:マクロ
回答  ちくたく  - 05/11/11(金) 10:40 -

引用なし
パスワード
   ホウレンソウ さん
こんにちは。

何も考えずにすると、こんなのです。
ThisWorkbookに以下のコードを記述します。
セルに1が入力されたらInputBoxが呼び出されます。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Target.Value = 1 Then
    Target.Offset(0, 1).Value = InputBox("なんか入力してください")
  End If
End Sub

【31074】Re:マクロ
お礼  ホウレンソウ  - 05/11/11(金) 13:43 -

引用なし
パスワード
   ちくたくさん
ご返事ありがとうございます。
早速やってみます。


▼ちくたく さん:
>ホウレンソウ さん
>こんにちは。
>
>何も考えずにすると、こんなのです。
>ThisWorkbookに以下のコードを記述します。
>セルに1が入力されたらInputBoxが呼び出されます。
>
>Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
>  If Target.Value = 1 Then
>    Target.Offset(0, 1).Value = InputBox("なんか入力してください")
>  End If
>End Sub

【31089】Re:マクロ
質問  ホウレンソウ  - 05/11/11(金) 15:33 -

引用なし
パスワード
   ちくたくさん

質問なんですが
>If Target.Value = 1 Then ←1ではなく変数にしたいときはどのようにすればよいですか?
>Target.Offset(0, 1).Value = InputBox("なんか入力してください")
Offset(0,1)←これも(i,j)というようにするにはどのようにすればよいですか?

あとInputBoxに入力した数字を指定した場所に入れたい場合はどのようにすればよいですか?
たくさん質問してしまい申し訳ありません。
よろしくお願いします。


▼ちくたく さん:
>ホウレンソウ さん
>こんにちは。
>
>何も考えずにすると、こんなのです。
>ThisWorkbookに以下のコードを記述します。
>セルに1が入力されたらInputBoxが呼び出されます。
>
>Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
>  If Target.Value = 1 Then
>    Target.Offset(0, 1).Value = InputBox("なんか入力してください")
>  End If
>End Sub

【31092】Re:マクロ
発言  Statis  - 05/11/11(金) 15:44 -

引用なし
パスワード
   こんにちは

>If Target.Value = 1 Then ←1ではなく変数にしたいときはどのようにすればよいですか?
>Target.Offset(0, 1).Value = InputBox("なんか入力してください")
>Offset(0,1)←これも(i,j)というようにするにはどのようにすればよいですか?


上記の各変数の値はどこで取得するのですか?

>あとInputBoxに入力した数字を指定した場所に入れたい場合はどのようにすればよいですか?

指定した場所てどこですか?

【31093】Re:マクロ
回答  Kein  - 05/11/11(金) 15:47 -

引用なし
パスワード
   Private Sub Worksheet_Change(ByVal Target As Range)
  Dim MyNum As Long

  With Target
    If IsEmpty(.Value) Then Exit Sub
    If Not IsNumeric(.Value) Then Exit Sub
  End With
  With Application
    MyNum = .InputBox("数値(整数)を入力してください", Type:=1)
    If MyNum = False Then Exit Sub
    .EnableEvents = False
    Range("A1").Vlue = MyNum
    .EnableEvents = True
  End With
End Sub

↑を、イベントを発生させたいシートのシートモジュールに入れてみて下さい。

【31100】Re:マクロ
発言  ホウレンソウ  - 05/11/11(金) 16:30 -

引用なし
パスワード
   Statisさん
はじめまして。

>上記の各変数の値はどこで取得するのですか?

説明不足で申し訳ありません。
変数というか1ではなく、どんな数字でも入力すればInputBoxがでるようにするには
どうすればいいのかという意味でした・・・(わかりづらくてすいません)

>指定した場所てどこですか?

たとえば、入力したところの2行目下のところに入力するにはどのようにすればよいですか?

わかりづらくて申し訳ありませんがよろしくお願いします。

▼Statis さん:
>こんにちは
>
>>If Target.Value = 1 Then ←1ではなく変数にしたいときはどのようにすればよいですか?
>>Target.Offset(0, 1).Value = InputBox("なんか入力してください")
>>Offset(0,1)←これも(i,j)というようにするにはどのようにすればよいですか?
>
>
>上記の各変数の値はどこで取得するのですか?
>
>>あとInputBoxに入力した数字を指定した場所に入れたい場合はどのようにすればよいですか?
>
>指定した場所てどこですか?

【31101】Re:マクロ
発言  ちくたく  - 05/11/11(金) 16:33 -

引用なし
パスワード
   こんにちは

>>If Target.Value = 1 Then ←1ではなく変数にしたいときはどのようにすればよいですか?

If Target.Value = 変数 Then
です。

>>Offset(0,1)←これも(i,j)というようにするにはどのようにすればよいですか?

意味がわかりませんが、
Offset(i,j)です。
もしかして、Cells(i, j)のことですか?

>>あとInputBoxに入力した数字を指定した場所に入れたい場合はどのようにすればよいですか?

指定した場所にいれてください。
例えば、
HENSU = InputBox("適当に入力してください")
Range("A1").Value = HENSU
とか。

これは個人的な考えですが、
要望は受け付けますが、注文は受け付けません。
(ただし、仕様が明確な注文は受け付けますが)
ヘルプを見るなり、それでもわからなかったら、
ここはどんな意味なの? って聞いて頂けた方が、助かります。
コード丸投げで保守なしってのは責任とれないので。
(まぁ、それなら答えるなって話ですが)
雑音、失礼。

【31102】Re:マクロ
お礼  ホウレンソウ  - 05/11/11(金) 16:34 -

引用なし
パスワード
   Keinさん

ありがとうございます。
試してみます。また何か質問するかとは思いますが、よろしくお願いします。


▼Kein さん:
>Private Sub Worksheet_Change(ByVal Target As Range)
>  Dim MyNum As Long
>
>  With Target
>    If IsEmpty(.Value) Then Exit Sub
>    If Not IsNumeric(.Value) Then Exit Sub
>  End With
>  With Application
>    MyNum = .InputBox("数値(整数)を入力してください", Type:=1)
>    If MyNum = False Then Exit Sub
>    .EnableEvents = False
>    Range("A1").Vlue = MyNum
>    .EnableEvents = True
>  End With
>End Sub
>
>↑を、イベントを発生させたいシートのシートモジュールに入れてみて下さい。

【31171】Re:マクロ
お礼  ホウレンソウ  - 05/11/14(月) 8:24 -

引用なし
パスワード
   おはようございます。
ホウレンソウ@本日から始動です。

>>>Offset(0,1)←これも(i,j)というようにするにはどのようにすればよいですか?
>
>意味がわかりませんが、
>Offset(i,j)です。
>もしかして、Cells(i, j)のことですか?
まさしくその通りです。わかりづらくてすいません。

>これは個人的な考えですが、
>要望は受け付けますが、注文は受け付けません。
>(ただし、仕様が明確な注文は受け付けますが)
>ヘルプを見るなり、それでもわからなかったら、
>ここはどんな意味なの? って聞いて頂けた方が、助かります。
>コード丸投げで保守なしってのは責任とれないので。
>(まぁ、それなら答えるなって話ですが)
>雑音、失礼。
すいませんでした・・・
もっと勉強します。

またよろしくお願い致します。


▼ちくたく さん:
>こんにちは
>
>>>If Target.Value = 1 Then ←1ではなく変数にしたいときはどのようにすればよいですか?
>
>If Target.Value = 変数 Then
>です。
>
>>>Offset(0,1)←これも(i,j)というようにするにはどのようにすればよいですか?
>
>意味がわかりませんが、
>Offset(i,j)です。
>もしかして、Cells(i, j)のことですか?
>
>>>あとInputBoxに入力した数字を指定した場所に入れたい場合はどのようにすればよいですか?
>
>指定した場所にいれてください。
>例えば、
>HENSU = InputBox("適当に入力してください")
>Range("A1").Value = HENSU
>とか。
>
>これは個人的な考えですが、
>要望は受け付けますが、注文は受け付けません。
>(ただし、仕様が明確な注文は受け付けますが)
>ヘルプを見るなり、それでもわからなかったら、
>ここはどんな意味なの? って聞いて頂けた方が、助かります。
>コード丸投げで保守なしってのは責任とれないので。
>(まぁ、それなら答えるなって話ですが)
>雑音、失礼。

【31178】Re:マクロ
質問  ホウレンソウ  - 05/11/14(月) 10:55 -

引用なし
パスワード
   Keinさん
おはようございます。

質問です。入力する範囲を指定したいのですが
どのようにすれば良いですか?


▼Kein さん:
>Private Sub Worksheet_Change(ByVal Target As Range)
>  Dim MyNum As Long
>
>  With Target
>    If IsEmpty(.Value) Then Exit Sub
>    If Not IsNumeric(.Value) Then Exit Sub
>  End With
>  With Application
>    MyNum = .InputBox("数値(整数)を入力してください", Type:=1)
>    If MyNum = False Then Exit Sub
>    .EnableEvents = False
>    Range("A1").Vlue = MyNum
>    .EnableEvents = True
>  End With
>End Sub
>
>↑を、イベントを発生させたいシートのシートモジュールに入れてみて下さい。

【31181】Re:マクロ
回答  Kein  - 05/11/14(月) 12:06 -

引用なし
パスワード
   >入力する範囲を指定したい

Range("A1").Vlue = MyNum

というところで、任意のセルを指定して下さい。
もし複数のセルに入れたければ

Range("A1:A5").Value = MyNum

とか

Range("A1:A3, B1:B3").Value = MyNum

などと書けばいいです。
これはとても基本的なことなので、分からなかったらしっかり勉強して理解して下さい。

【31190】Re:マクロ
質問  ホウレンソウ  - 05/11/14(月) 13:21 -

引用なし
パスワード
   Keinさん

すいません。InputBoxに入力した数字を反映させる範囲ではなく
最初に何か数字を入力するときの範囲をきめたいということでした・・・

あと、勉強不足ですいません。少しずつ勉強していきたいと思いますので
よろしくお願い致します。

▼Kein さん:
>>入力する範囲を指定したい
>
>Range("A1").Vlue = MyNum
>
>というところで、任意のセルを指定して下さい。
>もし複数のセルに入れたければ
>
>Range("A1:A5").Value = MyNum
>
>とか
>
>Range("A1:A3, B1:B3").Value = MyNum
>
>などと書けばいいです。
>これはとても基本的なことなので、分からなかったらしっかり勉強して理解して下さい。

【31191】Re:マクロ
発言  Kein  - 05/11/14(月) 13:30 -

引用なし
パスワード
   そーいうことなら、セル入力イベントの Target に対して制限を
付ければよいのです。例えば B1:B10 の範囲のみ有効とするなら

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim MyNum As Long

  If Intersect(Target, Range("B1:B10")) Is Nothing Then Exit Sub
  '↑これを追加する。
  With Target
    If IsEmpty(.Value) Then Exit Sub
    If Not IsNumeric(.Value) Then Exit Sub
  End With
  With Application
    MyNum = .InputBox("数値(整数)を入力してください", Type:=1)
    If MyNum = False Then Exit Sub
    .EnableEvents = False
    Range("A1").Vlue = MyNum
    .EnableEvents = True
  End With
End Sub

B1 単独のセルにしたいなら

With Target
  If .Count > 1 Then Exit Sub
  If .Address <> "$B$1" Then Exit Sub
  '↑の2行を追加する
  If IsEmpty(.Value) Then Exit Sub
  If Not IsNumeric(.Value) Then Exit Sub
End With

ということです。

【31198】Re:マクロ
お礼  ホウレンソウ  - 05/11/14(月) 14:41 -

引用なし
パスワード
   Kein さん

ありがとうございます。OKでした!
まだまだ勉強不足ですが、これからもよろしく
お願い致しますm(_ _)m


▼Kein さん:
>そーいうことなら、セル入力イベントの Target に対して制限を
>付ければよいのです。例えば B1:B10 の範囲のみ有効とするなら
>
>Private Sub Worksheet_Change(ByVal Target As Range)
>  Dim MyNum As Long
>
>  If Intersect(Target, Range("B1:B10")) Is Nothing Then Exit Sub
>  '↑これを追加する。
>  With Target
>    If IsEmpty(.Value) Then Exit Sub
>    If Not IsNumeric(.Value) Then Exit Sub
>  End With
>  With Application
>    MyNum = .InputBox("数値(整数)を入力してください", Type:=1)
>    If MyNum = False Then Exit Sub
>    .EnableEvents = False
>    Range("A1").Vlue = MyNum
>    .EnableEvents = True
>  End With
>End Sub
>
> B1 単独のセルにしたいなら
>
>With Target
>  If .Count > 1 Then Exit Sub
>  If .Address <> "$B$1" Then Exit Sub
>  '↑の2行を追加する
>  If IsEmpty(.Value) Then Exit Sub
>  If Not IsNumeric(.Value) Then Exit Sub
>End With
>
>ということです。

8788 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free