Excel VBA質問箱 IV

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

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


9067 / 13644 ツリー ←次へ | 前へ→

【29439】シートから別シートへのデータ移動 初心者 05/10/5(水) 0:02 質問[未読]
【29440】Re:シートから別シートへのデータ移動 ponpon 05/10/5(水) 4:23 発言[未読]
【29464】Re:シートから別シートへのデータ移動 初心者 05/10/5(水) 22:40 お礼[未読]
【29441】Re:シートから別シートへのデータ移動 YN62 05/10/5(水) 6:51 発言[未読]
【29466】Re:シートから別シートへのデータ移動 初心者 05/10/5(水) 22:50 お礼[未読]
【29475】Re:シートから別シートへのデータ移動 ponpon 05/10/6(木) 0:21 発言[未読]
【29523】Re:シートから別シートへのデータ移動 YN62 05/10/6(木) 21:18 質問[未読]
【29525】Re:シートから別シートへのデータ移動 hine 05/10/6(木) 21:50 発言[未読]
【29530】Re:シートから別シートへのデータ移動 ponpon 05/10/6(木) 23:47 発言[未読]
【29528】Re:シートから別シートへのデータ移動 初心者 05/10/6(木) 22:15 お礼[未読]

【29439】シートから別シートへのデータ移動
質問  初心者  - 05/10/5(水) 0:02 -

引用なし
パスワード
   シート1に入力したデータを、コマンドボタン1を押すことによりシート2へ転記させる。
データ取得セル位置は列単位ではなく、多セルにわたるのが前提となる。

シート1→シート2へのデータ転記時は列単位に表示させている。
以降の転記時はシート2の次行へ記録する。

以上の動作で、「以降の転記時はシート2の次行へ記録する」の
記述が理解できず悩んでいます。
お解りの方がいたら御教授下さい。

【29440】Re:シートから別シートへのデータ移動
発言  ponpon  - 05/10/5(水) 4:23 -

引用なし
パスワード
   こんばんは。
何かの課題ですか?

それなら ヒントだけ


>以降の転記時はシート2の次行へ記録する。

これは、一回コマンドボタン1を押してシート2の2行目に転記したとします。
その次に、シ−ト1のデータを書き換えて、コマンドボタン1を押した時は、
シート2の3行目に、次は4行目に・・というように、行を次々に下へずらして、
転記する。
ということだと思います。

「Offset」や「End」をヘルプなどで調べてみましょう。

【29441】Re:シートから別シートへのデータ移動
発言  YN62  - 05/10/5(水) 6:51 -

引用なし
パスワード
   ▼初心者 さん:
>シート1に入力したデータを、コマンドボタン1を押すことによりシート2へ転記させる。
>データ取得セル位置は列単位ではなく、多セルにわたるのが前提となる。
>
>シート1→シート2へのデータ転記時は列単位に表示させている。
>以降の転記時はシート2の次行へ記録する。
>
>以上の動作で、「以降の転記時はシート2の次行へ記録する」の
>記述が理解できず悩んでいます。
>お解りの方がいたら御教授下さい。

Sub Macro1()

  Sheets("sheet1").Range("A1").Copy
  Sheets("Sheet2").Select
  Range("A65536").End(xlUp).Offset(1).Select
  ActiveSheet.Paste
 
End Sub

もっと美しいコードが紹介されるのでは・・・っと思い、期待して
あえて書かせていただきました。
意味が少し取り違えているかも知れませんが。

【29464】Re:シートから別シートへのデータ移動
お礼  初心者  - 05/10/5(水) 22:40 -

引用なし
パスワード
   御返答ありがとうございます。
ヒント感謝です。

【29466】Re:シートから別シートへのデータ移動
お礼  初心者  - 05/10/5(水) 22:50 -

引用なし
パスワード
   御返答ありがとうございます。
ご親切にコードまで書いて頂いて恐縮です。

もし見られたらで宜しいのですが・・

Private Sub CommandButton1_Click()

Worksheets("設定1").Range("F2").Copy _
Destination:=Worksheets("設定2").Range("A3")
Range("A65536").End(xlUp).Offset(1).Select
ActiveSheet.Paste

End Sub

このような感じで実行すると、
RangeクラスのSelectメソッドが失敗しましたとエラーが出ます。
(実行時エラー1004)
自分なりにコードを組んでみたものの、このエラーが出て悩まされております・・
根本的に間違っているのでしょうか?

【29475】Re:シートから別シートへのデータ移動
発言  ponpon  - 05/10/6(木) 0:21 -

引用なし
パスワード
   ▼初心者 さん:
こんばんは。

>このような感じで実行すると、
>RangeクラスのSelectメソッドが失敗しましたとエラーが出ます。
>(実行時エラー1004)

RangeをSelectをするためには、そのシートがActiveになってないと
エラーになります。
従って、Selectを使わない記述がよいと思います。
設定2の1行目に項目があるとして、

Private Sub CommandButton1_Click()

Worksheets("設定1").Range("F2").Copy _
Destination:=Worksheets("設定2").Range("A65536").End(xlUp).Offset(1)

End Sub

【29523】Re:シートから別シートへのデータ移動
質問  YN62  - 05/10/6(木) 21:18 -

引用なし
パスワード
   ▼ponpon さん:
やっぱり勉強になりました。
Copy Destinationが頭に浮びませんでした。

>Private Sub CommandButton1_Click()
>
>Worksheets("設定1").Range("F2").Copy _
>Destination:=Worksheets("設定2").Range("A65536").End(xlUp).Offset(1)
>
>End Sub

コマンドボタンを使わずに、上の逆のようなコードのシンプルなものも
ついでに教えてください。

Sub macro3()
Dim i As Integer
For i = -15 To 0
Worksheets("設定2").Range("A65536").End(xlUp).Offset(i).Copy _
Destination:=Worksheets("設定1").Range("B3")
Next
End Sub

としたのですが・・・もっとスマートな方法は無いでしょうか?

【29525】Re:シートから別シートへのデータ移動
発言  hine  - 05/10/6(木) 21:50 -

引用なし
パスワード
   初心者 さん
YN62 さん
ponpon さん
こんばんは
横入り失礼します。

>Sub macro3()
>Dim i As Integer
>For i = -15 To 0
>Worksheets("設定2").Range("A65536").End(xlUp).Offset(i).Copy _
>Destination:=Worksheets("設定1").Range("B3")
>Next
>End Sub

は、ループする意味が無いのでは?
Worksheets("設定1").Range("B3")にしか貼り付けしてないので。
勘違いならすいません。

【29528】Re:シートから別シートへのデータ移動
お礼  初心者  - 05/10/6(木) 22:15 -

引用なし
パスワード
   ありがとうございます!ponponさん
やっとコードが完成しました。しっかりと仕事に使います。
VBAは便利ですね。 少しでも上達できるように頑張ります。
また質問する事があるかも知れませんが、
宜しくお願いします。

【29530】Re:シートから別シートへのデータ移動
発言  ponpon  - 05/10/6(木) 23:47 -

引用なし
パスワード
   ▼YN62 さん,hineさん こんばんは。
スマートな方法は、わかりませんが・・・

>For i = -15 To 0

 これだと、設定2のA列に15行以上ないとエラーになりますよね。

>Worksheets("設定2").Range("A65536").End(xlUp).Offset(i).Copy _
>Destination:=Worksheets("設定1").Range("B3")

 これだと、ループして、最後の値が、Worksheets("設定1").Range("B3")に書き込まれるので、
hineさんの言うとおりループの意味はないですね。

>Next
>End Sub
>
>としたのですが・・・もっとスマートな方法は無いでしょうか?

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