Excel VBA質問箱 IV

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

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


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

【46431】数式の列データ最後までのオートフィル acochaco 07/2/3(土) 9:42 質問[未読]
【46432】Re:数式の列データ最後までのオートフィル かみちゃん 07/2/3(土) 10:59 発言[未読]
【46434】Re:数式の列データ最後までのオートフィル acochaco 07/2/3(土) 12:44 質問[未読]
【46435】Re:数式の列データ最後までのオートフィル かみちゃん 07/2/3(土) 12:54 発言[未読]
【46436】Re:数式の列データ最後までのオートフィル acochaco 07/2/3(土) 13:26 質問[未読]
【46437】Re:数式の列データ最後までのオートフィル かみちゃん 07/2/3(土) 13:43 発言[未読]

【46431】数式の列データ最後までのオートフィル
質問  acochaco  - 07/2/3(土) 9:42 -

引用なし
パスワード
   任意の列に、別シートの数字を入力させたいと思っています。
列は、浮動の為
1.タイトルを検索して、一行下を指定し数字を他シートから貼り付け
2.列の最後のデータまでオートフィルを実行
させたいと思っております。


Sub 価格自動入力()

  Dim i As Integer
  Application.ScreenUpdating = False
 '3行目で検索
  For i = Range("IV3").End(xlToLeft).Column To 1 Step -1
 If InStr(Cells(3, i).Value, "価格") > 0 Then
  Cells(4, i).FormulaR1C1 = "=Sheet1!R[-1]C[-5]"
 
  Selection.AutoFill Destination:=Range(Selection, ActiveCell.xlLastCell), Type:=xlFillValues
End If
Next i
Application.ScreenUpdating = False
End Sub

としていますが、エラーがでます。(オブジェクトはサポートしていません。)
どうぞよろしくお願い致します!

【46432】Re:数式の列データ最後までのオートフィル
発言  かみちゃん  - 07/2/3(土) 10:59 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>としていますが、エラーがでます。(オブジェクトはサポートしていません。)

どこのコードでエラーが出ていますか?
エラーメッセージが表示されると、「デバッグ」ボタンがクリックできるようで
あれば、それをクリックすると、原因となっているコードが反転表示されますの
で、それも明示するようにしましょう。

ActiveCell.xlLastCell
は、どのようなお考えで記述されたのでしょうか?
詳しくは、以下にも載っているので確認していただきたいのですが、
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_030_100.html
(先頭4文字は、全角文字になっているので、半角にしてください)
列の値の入っている最終行は、Endプロパティで取得できます。
End(xlToLeft)は、行方向なので、同じ要領です。

そこで、以下のようにします。

Sub Sample1()
 '価格自動入力
 Dim i As Integer
 Application.ScreenUpdating = False
 '3行目で検索
 For i = Range("IV3").End(xlToLeft).Column To 1 Step -1
  If InStr(Cells(3, i).Value, "価格") > 0 Then
   Cells(4, i).FormulaR1C1 = "=Sheet1!R[-1]C[-5]"
   If Range(Cells(4, i), Cells(Rows.Count, i).End(xlUp)).Count > 1 Then
    Cells(4, i).AutoFill Destination:=Range(Cells(4, i), Cells(Rows.Count, i).End(xlUp)), Type:=xlFillValues
'   Selection.AutoFill Destination:=Range(Selection, ActiveCell.xlLastCell), Type:=xlFillValues
   End If
  End If
 Next i
 Application.ScreenUpdating = False
End Sub

オートフィルをしなくても、以下のような記述の仕方でもできます。
数式設定範囲のセル指定のコードが複雑かもしれませんが・・・

Sub Sample1_1()
 '価格自動入力
 Dim i As Integer
 Application.ScreenUpdating = False
 '3行目で検索
 For i = Range("IV3").End(xlToLeft).Column To 1 Step -1
  With Cells(3, i)
   If InStr(.Value, "価格") > 0 Then
    .Offset(1).Resize(.Offset(Rows.Count - .Row).End(xlUp).Row - .Row) _
     .FormulaR1C1 = "=Sheet1!R[-1]C[-5]"
   End If
  End With
 Next i
 Application.ScreenUpdating = False
End Sub

【46434】Re:数式の列データ最後までのオートフィル
質問  acochaco  - 07/2/3(土) 12:44 -

引用なし
パスワード
   かみちゃん さんさん、ご回答ありがとうございました!

列の最終セルの指定方法はわかりました。

>そこで、以下のようにします。
>
>Sub Sample1()
> '価格自動入力
> Dim i As Integer
> Application.ScreenUpdating = False
> '3行目で検索
> For i = Range("IV3").End(xlToLeft).Column To 1 Step -1
>  If InStr(Cells(3, i).Value, "価格") > 0 Then
>   Cells(4, i).FormulaR1C1 = "=Sheet1!R[-1]C[-5]"
>   If Range(Cells(4, i), Cells(Rows.Count, i).End(xlUp)).Count > 1 Then
>    Cells(4, i).AutoFill Destination:=Range(Cells(4, i), Cells(Rows.Count, i).End(xlUp)), Type:=xlFillValues
>   Selection.AutoFill Destination:=Range(Selection, ActiveCell.xlLastCell), Type:=xlFillValues
>   End If
>  End If
> Next i
> Application.ScreenUpdating = False
>End Sub

教えて頂いたものを記述しましたが、オートフィル昨日が
作動しませんでした。。いろいろやってみましたが
どうも自力では力不足で、
もう一度教えていただけますでしょうか。。
If Range(Cells(4, i), Cells(Rows.Count, i).End(xlUp)).Count > 1 Then
ここの、1より大きかったらという意味もすみませんが
教えて下さい。
よろしくお願いいたします。

【46435】Re:数式の列データ最後までのオートフィル
発言  かみちゃん  - 07/2/3(土) 12:54 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>教えて頂いたものを記述しましたが、オートフィル機能が
>作動しませんでした。。

私の手元では、動作しますので、以下のようなシートイメージで何がしたいのか
を提示していただけませんか?
   A   B   C   D
1
2
3
4
5
※シートイメージ提示の際には、投稿欄の右下の「等幅」にチェックしていただくと
 キレイに表示されます。

>If Range(Cells(4, i), Cells(Rows.Count, i).End(xlUp)).Count > 1 Then
>ここの、1より大きかったらという意味

Cells(4, i).AutoFill 〜
は、何をしようとしているか考えてみてください。
対象となるセルの数が1つしかないときはAutoFillする必要があるでしょうか?
というより、できますか?

【46436】Re:数式の列データ最後までのオートフィル
質問  acochaco  - 07/2/3(土) 13:26 -

引用なし
パスワード
   かみちゃんさん、お手数おかけしますが
よろしくお願いします。

動作イメージです。
入力シート
   A   B   C   D   E   F
1 品名  価格 個数  品名  価格 個数
2 もも      5  もも      10      
3 みかん     4  みかん     5

500(浮動)

各月毎の商品別売上です。
別シートの商品別価格から、価格列に値を貼り付けます。

商品別価格シート
  A   B   
1 品名  価格 
2 もも  100    
3 みかん  50

500(浮動)

入力シートの、価格列に、商品別価格シートの価格を
貼り付けたいのです。


>対象となるセルの数が1つしかないときはAutoFillする必要があるでしょうか?
>というより、できますか?
必要はないですね。。
セル数が1以上だったらオートフィルする、ですね。
ありがとうございます!

今試してみたところ、
Selection.AutoFill Destination:=Range(Selection, ActiveCell.xlLastCell), Type:=xlFillValues
のところで、このオブジェクトは、プロパティまたはメソッドをサポートしていませんエラーがでました。。

よろしくお願いします。

【46437】Re:数式の列データ最後までのオートフィル
発言  かみちゃん  - 07/2/3(土) 13:43 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>動作イメージです。
>入力シート
>   A   B   C   D   E   F
>1 品名  価格 個数  品名  価格 個数
>2 もも      5  もも      10      
>3 みかん     4  みかん     5
>
>500(浮動)
>
>各月毎の商品別売上です。
>別シートの商品別価格から、価格列に値を貼り付けます。
>
>商品別価格シート
>  A   B   
>1 品名  価格 
>2 もも  100    
>3 みかん  50
>
>500(浮動)
>
>入力シートの、価格列に、商品別価格シートの価格を
>貼り付けたいのです。

上記のシートイメージ、関連性がよくわかりません。
提示されたコードの数式でどのような処理をしたいのでしょうか?

>>対象となるセルの数が1つしかないときはAutoFillする必要があるでしょうか?
>>というより、できますか?
>必要はないですね。。
>セル数が1以上だったらオートフィルする、ですね。

「1以上」ではなく、「1より大きい」場合です。
これ、意外に重要なので・・・

>今試してみたところ、
>Selection.AutoFill Destination:=Range(Selection, ActiveCell.xlLastCell), Type:=xlFillValues
>のところで、このオブジェクトは、プロパティまたはメソッドをサポートしていませんエラーがでました。。

ですから、そのコードがまずいので、
[46432]のコードを提示させていただいています。

>教えて頂いたものを記述しましたが、オートフィル機能が
>作動しませんでした。。

作動しないというのは、上記のエラーメッセージが出るということですか?
もしそれであれば、もう一度[46432]のコードを試してください。
ちなみに
Selection.AutoFill〜
のコードは、コメント文にしてありますよ。

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