Excel VBA質問箱 IV

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

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


7467 / 13645 ツリー ←次へ | 前へ→

【38967】シートを選択するVBAを教えてください。 kaoru 06/6/15(木) 14:43 質問[未読]
【38968】Re:シートを選択するVBAを教えてください。 Statis 06/6/15(木) 15:06 発言[未読]
【38970】Re:シートを選択するVBAを教えてください。 kaoru 06/6/15(木) 15:15 質問[未読]
【38971】Re:シートを選択するVBAを教えてください。 Statis 06/6/15(木) 15:38 回答[未読]
【38973】Re:シートを選択するVBAを教えてください。 kaoru 06/6/15(木) 15:41 お礼[未読]
【38975】Re:シートを選択するVBAを教えてください。 kaoru 06/6/15(木) 16:09 質問[未読]
【38992】Re:シートを選択するVBAを教えてください。 Blue 06/6/15(木) 17:26 発言[未読]
【39001】Re:シートを選択するVBAを教えてください。 kaoru 06/6/15(木) 18:29 質問[未読]
【39004】Re:シートを選択するVBAを教えてください。 Blue 06/6/15(木) 19:30 発言[未読]
【39015】Re:シートを選択するVBAを教えてください。 kaoru 06/6/16(金) 8:41 お礼[未読]
【38993】Re:シートを選択するVBAを教えてください。 Statis 06/6/15(木) 17:33 発言[未読]
【39000】Re:シートを選択するVBAを教えてください。 kaoru 06/6/15(木) 18:26 質問[未読]
【39005】Re:シートを選択するVBAを教えてください。 Statis 06/6/15(木) 19:32 発言[未読]
【39014】Re:シートを選択するVBAを教えてください。 kaoru 06/6/16(金) 8:39 お礼[未読]

【38967】シートを選択するVBAを教えてください。
質問  kaoru  - 06/6/15(木) 14:43 -

引用なし
パスワード
   はじめまして、お忙しいところ申し訳ございませんが
以下の処理についてのVBAを教えてください。
よろしくお願いいたします。

シート1.のセルAに1を入力すると。
シートAを選択しシートAのセルBをシート1.のセルFに貼り付ける。

【38968】Re:シートを選択するVBAを教えてください...
発言  Statis  - 06/6/15(木) 15:06 -

引用なし
パスワード
   ▼kaoru さん:
こんにちは
>はじめまして、お忙しいところ申し訳ございませんが
>以下の処理についてのVBAを教えてください。
>よろしくお願いいたします。
>
>シート1.のセルAに1を入力すると。
>シートAを選択しシートAのセルBをシート1.のセルFに貼り付ける。

セルAとかセルBとかセルFてなんですか?
具体的に記載し下さい。

【38970】Re:シートを選択するVBAを教えてください...
質問  kaoru  - 06/6/15(木) 15:15 -

引用なし
パスワード
   ▼Statis さん:
 質問内容がわかりにくくてすみませんでした。

  シート名『1』のセルA5に数字「1」を入力するとシート名『A』のセルB20の  値をシート名『1』のセルA6に貼り付ける。
  シート名『1』のセルA5に数字「2」を入力するとシート名『B』のセルB20の  値をシート名『1』のセルA6に貼り付ける。
  この作業をVBAコマンドで出来ますか。よろしくお願いいたします。
  

>▼kaoru さん:
>こんにちは
>>はじめまして、お忙しいところ申し訳ございませんが
>>以下の処理についてのVBAを教えてください。
>>よろしくお願いいたします。
>>
>>シート1.のセルAに1を入力すると。
>>シートAを選択しシートAのセルBをシート1.のセルFに貼り付ける。
>
>セルAとかセルBとかセルFてなんですか?
>具体的に記載し下さい。

【38971】Re:シートを選択するVBAを教えてください...
回答  Statis  - 06/6/15(木) 15:38 -

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

シート1のシートモジュールにコピーしてください
動作:セルA5に「1」か「2」を入力して「Enter」等で
   セルを移動すると動作します。(1,2以外は動作しません)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Sh As String
With Target
   If .Address(0, 0) <> "A5" Then Exit Sub
   If .Cells.Count > 1 Then Exit Sub
   Select Case .Value
      Case 1: Sh = "A"
      Case 2: Sh = "B"
      Case Else: Exit Sub
   End Select
   Application.EnableEvents = False
   .Offset(1).Value = Worksheets(Sh).Range("B20").Value
   Application.EnableEvents = True
End With
End Sub

【38973】Re:シートを選択するVBAを教えてください...
お礼  kaoru  - 06/6/15(木) 15:41 -

引用なし
パスワード
   ▼Statis さん:
早速のご回答誠にありがとうございます。
 早速試してみます。ありがとうございました。

>こんにちは
>
>シート1のシートモジュールにコピーしてください
>動作:セルA5に「1」か「2」を入力して「Enter」等で
>   セルを移動すると動作します。(1,2以外は動作しません)
>
>Private Sub Worksheet_Change(ByVal Target As Range)
>Dim Sh As String
>With Target
>   If .Address(0, 0) <> "A5" Then Exit Sub
>   If .Cells.Count > 1 Then Exit Sub
>   Select Case .Value
>      Case 1: Sh = "A"
>      Case 2: Sh = "B"
>      Case Else: Exit Sub
>   End Select
>   Application.EnableEvents = False
>   .Offset(1).Value = Worksheets(Sh).Range("B20").Value
>   Application.EnableEvents = True
>End With
>End Sub

【38975】Re:シートを選択するVBAを教えてください...
質問  kaoru  - 06/6/15(木) 16:09 -

引用なし
パスワード
   ▼Statis さん:
早速ためしてみたのですがうまく動作しません。
 シートモジュールとはVBAPROJECTのSheet1のことですよね。
 初歩的なことを聞いて申し訳ございません。
>こんにちは
>
>シート1のシートモジュールにコピーしてください
>動作:セルA5に「1」か「2」を入力して「Enter」等で
>   セルを移動すると動作します。(1,2以外は動作しません)
>
>Private Sub Worksheet_Change(ByVal Target As Range)
>Dim Sh As String
>With Target
>   If .Address(0, 0) <> "A5" Then Exit Sub
>   If .Cells.Count > 1 Then Exit Sub
>   Select Case .Value
>      Case 1: Sh = "A"
>      Case 2: Sh = "B"
>      Case Else: Exit Sub
>   End Select
>   Application.EnableEvents = False
>   .Offset(1).Value = Worksheets(Sh).Range("B20").Value
>   Application.EnableEvents = True
>End With
>End Sub

【38992】Re:シートを選択するVBAを教えてください...
発言  Blue  - 06/6/15(木) 17:26 -

引用なし
パスワード
   試してみてください。
メッセージボックスがでる場合、最初に提示した
>   シート名『1』のセルA5に数字「1」を入力するとシート名『A』のセルB20の
>  値をシート名『1』のセルA6に貼り付ける。
>  シート名『1』のセルA5に数字「2」を入力するとシート名『B』のセルB20の
>  値をシート名『1』のセルA6に貼り付ける。
が間違っています。

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Sh As String
  With Target
     ' A5以外の変更は何もしない
     If .Address(0, 0) <> "A5" Then Exit Sub
     ' セルの数が1で無い場合も何もしない
     If .Cells.Count > 1 Then Exit Sub
     ' セルの値で切り分け
     Select Case .Value
      Case 1: Sh = "A"
      Case 2: Sh = "B"
      ' 1, 2ではない
      Case Else
        MsgBox "1か2じゃねぇよ。"
        Exit Sub
    End Select
    
    Application.EnableEvents = False

    On Error Resume Next

    ' 指定のシートのB20の値をA6に入れる
    .Offset(1).Value = Worksheets(Sh).Range("B20").Value

    If Err.Number <> 0 Then
      MsgBox "'" & Sh & "'ってシートないじゃん。"
    End If    

    On Error GoTo 0

    Application.EnableEvents = True
  End With
End Sub


ついでに、類似スレ
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=38974;id=excel
も参考にしてください。

【38993】Re:シートを選択するVBAを教えてください...
発言  Statis  - 06/6/15(木) 17:33 -

引用なし
パスワード
   ▼kaoru さん:
こんにちは
> 早速ためしてみたのですがうまく動作しません。
> シートモジュールとはVBAPROJECTのSheet1のことですよね。
> 初歩的なことを聞いて申し訳ございません。

確認です。Sheet名=「1」のシートモジュールです。

必ず「A」「B」シートがあること。

コードの記載場所は。
該当シート(1)のシート名で右クリック→「コード表示」を選択
VBE画面が開きますのでそこに記載(コピー)です。

【39000】Re:シートを選択するVBAを教えてください...
質問  kaoru  - 06/6/15(木) 18:26 -

引用なし
パスワード
   ▼Statis さん:
ご回答ありがとうございます。
 コード表を表示し貼り付けましたが動作しません。
 エクセルのマクロセキュリティーは『低』です。
 なぜでしょう?
 お忙しいところすみません。
>▼kaoru さん:
>こんにちは
>> 早速ためしてみたのですがうまく動作しません。
>> シートモジュールとはVBAPROJECTのSheet1のことですよね。
>> 初歩的なことを聞いて申し訳ございません。
>
>確認です。Sheet名=「1」のシートモジュールです。
>
>必ず「A」「B」シートがあること。
>
>コードの記載場所は。
>該当シート(1)のシート名で右クリック→「コード表示」を選択
>VBE画面が開きますのでそこに記載(コピー)です。

【39001】Re:シートを選択するVBAを教えてください...
質問  kaoru  - 06/6/15(木) 18:29 -

引用なし
パスワード
   ▼Blue さん:
 ご回答ありがとうございます。
 試してみましたが動作しません。
 ひとつきになるのですが
>     ' セルの数が1で無い場合も何もしない
>     If .Cells.Count > 1 Then Exit Sub
 はどういう意味ですか?セルの数がシート上に1以上でない場合
 という意味ですか?
 お忙しいところすみません。
>試してみてください。
>メッセージボックスがでる場合、最初に提示した
>>   シート名『1』のセルA5に数字「1」を入力するとシート名『A』のセルB20の
>>  値をシート名『1』のセルA6に貼り付ける。
>>  シート名『1』のセルA5に数字「2」を入力するとシート名『B』のセルB20の
>>  値をシート名『1』のセルA6に貼り付ける。
>が間違っています。
>
>Private Sub Worksheet_Change(ByVal Target As Range)
>  Dim Sh As String
>  With Target
>     ' A5以外の変更は何もしない
>     If .Address(0, 0) <> "A5" Then Exit Sub
>     ' セルの数が1で無い場合も何もしない
>     If .Cells.Count > 1 Then Exit Sub
>     ' セルの値で切り分け
>     Select Case .Value
>      Case 1: Sh = "A"
>      Case 2: Sh = "B"
>      ' 1, 2ではない
>      Case Else
>        MsgBox "1か2じゃねぇよ。"
>        Exit Sub
>    End Select
>    
>    Application.EnableEvents = False
>
>    On Error Resume Next
>
>    ' 指定のシートのB20の値をA6に入れる
>    .Offset(1).Value = Worksheets(Sh).Range("B20").Value
>
>    If Err.Number <> 0 Then
>      MsgBox "'" & Sh & "'ってシートないじゃん。"
>    End If    
>
>    On Error GoTo 0
>
>    Application.EnableEvents = True
>  End With
>End Sub
>
>
>ついでに、類似スレ
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=38974;id=excel
>も参考にしてください。

【39004】Re:シートを選択するVBAを教えてください...
発言  Blue  - 06/6/15(木) 19:30 -

引用なし
パスワード
   ▼kaoru さん:
> はどういう意味ですか?セルの数がシート上に1以上でない場合
> という意味ですか?
違います。
変更のあったセルの数です。
(貼り付けとかすれば)複数のセルを一気に変更することは可能ですので、
この処理をいれたというところでしょうか。

最終手段です。
本当にそのイベントが発生し、コードが呼ばれているかチェックします。
コードの画面で、

     If .Address(0, 0) <> "A5" Then Exit Sub

の行を選択し、F9キーを押してください。
それから、A5の内容を変更し、Enterを押してください。
コードの画面が開けば、その関数が呼ばれていることがわかります。
その画面になったら F5キーを押してください。

【39005】Re:シートを選択するVBAを教えてください...
発言  Statis  - 06/6/15(木) 19:32 -

引用なし
パスワード
   こんばんは
一度、実行してErrがでませんでしたか?

【39014】Re:シートを選択するVBAを教えてください...
お礼  kaoru  - 06/6/16(金) 8:39 -

引用なし
パスワード
   ▼Statis さん:
返信が遅れてすみません。
 今朝改めてしてみると動きました。
 なぜ昨日動作しなかったのか?
 どうもありがとうございました。
 薫
>こんばんは
>一度、実行してErrがでませんでしたか?

【39015】Re:シートを選択するVBAを教えてください...
お礼  kaoru  - 06/6/16(金) 8:41 -

引用なし
パスワード
   ▼Blue さん:
 返信が遅くなり申し訳ございません。
 おはようございます。早速やってみましたらうまく動作できました。
 ありがとうございました。薫
>▼kaoru さん:
>> はどういう意味ですか?セルの数がシート上に1以上でない場合
>> という意味ですか?
>違います。
>変更のあったセルの数です。
>(貼り付けとかすれば)複数のセルを一気に変更することは可能ですので、
>この処理をいれたというところでしょうか。
>
>最終手段です。
>本当にそのイベントが発生し、コードが呼ばれているかチェックします。
>コードの画面で、
>
>     If .Address(0, 0) <> "A5" Then Exit Sub
>
>の行を選択し、F9キーを押してください。
>それから、A5の内容を変更し、Enterを押してください。
>コードの画面が開けば、その関数が呼ばれていることがわかります。
>その画面になったら F5キーを押してください。

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