Excel VBA質問箱 IV

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

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


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

【46719】アプリケーション定義オブジェクト定義の方法 初心者 07/2/13(火) 11:00 質問[未読]
【46724】Re:アプリケーション定義オブジェクト定義... りん@とおりすがり 07/2/13(火) 12:26 回答[未読]
【46742】Re:アプリケーション定義オブジェクト定義... 初心者 07/2/13(火) 18:13 質問[未読]
【46743】Re:アプリケーション定義オブジェクト定義... 初心者 07/2/13(火) 18:22 お礼[未読]

【46719】アプリケーション定義オブジェクト定義の...
質問  初心者  - 07/2/13(火) 11:00 -

引用なし
パスワード
   次のことをやりたいと思います。
○sheet1からsheet2へ1行ずつコピーしていく。
sheet1のa4:c4をコピーし、sheet2のF4からH4へペースト。
sheet2のD4をコピーし、sheet2のM4へペースト。

実行すると以下のメッセージが出ます。
○「アプリケーション定義、またはオブジェクト定義のエラーです」

以下のことを教えて下さい。
○アプリケーション定義、オブジェクト定義のやり方

●sheet1のデータ
   A   B   C   D    E  F
4  a   b   c   文字1
5  d   e   f   文字2      
6  g   h   i   文字3
7  j   k   l   文字4


●sheet2のデータ
   F   G   H    ・・・   M  
4  a   b   c          文字1
5  d   e   f          文字2      
6  g   h   i          文字3
7  j   k   l          文字4


-------------------------------------------
Sub sample()

Dim a1, a2, a3, a4, a5 As Variant


'sheet1のabcをsheet2へコピーする
  
 
  Sheets("sheet1").Select
   
  a3 = 4
  a2 = 0
  a4 = 4
  a5 = 5
   
  Do While a1 <= a3
  a1 = 4
   
  Sheets("sheet1").Select
  Range("A4").Offset(a1 - 4).Resize(0, a5).Select
  Selection.Copy
  
  Sheets("sheet2").Select
  Range("F4").Offset(a2 * a4).Select
  ActiveSheet.Paste
    

'sheet1の文字1,2,3,4をsheet2へコピーする
  Sheets("sheet1").Select
  Range("d" & a1).Offset(a1 - 4).Select
  Selection.Copy
  Sheets("sheet2").Select
  Range("M4").Offset(a2 * a4).Select
  ActiveSheet.Paste
  
  a1 = a1 + 1
  a2 = a2 + 1
  
  Loop
  
  
End Sub

----------------------------------------------------

【46724】Re:アプリケーション定義オブジェクト定...
回答  りん@とおりすがり  - 07/2/13(火) 12:26 -

引用なし
パスワード
   初心者 さん、こんにちわ。

>○sheet1からsheet2へ1行ずつコピーしていく。
>sheet1のa4:c4をコピーし、sheet2のF4からH4へペースト。
>sheet2のD4をコピーし、sheet2のM4へペースト。


>●sheet1のデータ
>   A   B   C   D    E  F
>4  a   b   c   文字1
>5  d   e   f   文字2      
>6  g   h   i   文字3
>7  j   k   l   文字4
>●sheet2のデータ
>   F   G   H    ・・・   M  
>4  a   b   c          文字1
>5  d   e   f          文字2      
>6  g   h   i          文字3
>7  j   k   l          文字4

エラーの原因は、Resize(範囲の変更)で行数を0にしているからです。
Range("A4").Offset(a1 - 4).Resize(0, a5).Select


望みのコピーを実行するには
>○sheet1からsheet2へ1行ずつコピーしていく。
>sheet1のa4:c4をコピーし、sheet2のF4からH4へペースト。
>sheet2のD4をコピーし、sheet2のM4へペースト。

Sub test1()
  'そのまんま
  With Application.ActiveWorkbook
   .Worksheets("Sheet1").Range("A4:C4").Copy Destination:= _
     .Worksheets("Sheet2").Range("F4")
   .Worksheets("Sheet1").Range("D4").Copy Destination:= _
     .Worksheets("Sheet2").Range("M4")
  End With
End Sub


Sub test2()
  '行番号に変数を使うなら
  Dim RR As Long
  RR = 1
  With Application.ActiveWorkbook
   .Worksheets("Sheet1").Range("A" & RR & ":C" & RR).Copy Destination:= _
     .Worksheets("Sheet2").Range("F" & RR)
   .Worksheets("Sheet1").Range("D" & RR).Copy Destination:= _
     .Worksheets("Sheet2").Range("M" & RR)
  End With
End Sub

こんな感じです。

【46742】Re:アプリケーション定義オブジェクト定...
質問  初心者  - 07/2/13(火) 18:13 -

引用なし
パスワード
   ▼りん@とおりすがり さん:

ありがとうございます。

>エラーの原因は、Resize(範囲の変更)で行数を0にしているからです。
>Range("A4").Offset(a1 - 4).Resize(0, a5).Select

Range("A4").Offset(a1 - 4).Resize(1, a5).Select
のようにしてみたのですが、やはりエラーが出てしまいます。
どうしてでしょう・・・・。

【46743】Re:アプリケーション定義オブジェクト定...
お礼  初心者  - 07/2/13(火) 18:22 -

引用なし
パスワード
   ▼りん@とおりすがり さん:

ごめんなさい。やっぱりできました。
すいませんでした。

Range("A4").Offset(a1 - 4).Resize(1, a5).Select
に変更しました。

また、a1に値を代入してませんでした。

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