"sheet1"のA1:J1を"sheet2"のA1:J1にコピー
"sheet1"のA2:J2を"sheet2"のA2:J2にコピー
"sheet1"のA3:J3を"sheet2"のA3:J3にコピー
これを"sheet1"A:Jが空欄になるまでループさせたいのですが、
どうしてもエラーが出てしまいます。。。
前回も同様の質問をして、回答を頂いたのですが、
自分なりに応用を利かせてやってみたら、エラーが出てしまいます><
------------------------------------------------------------
Sub cpy2()
Dim i As Long
Dim Sht1 As Range
Dim Sht2 As Range
Set Sht1 = Sheets("Sheet1").Range("A1:J1") ←("A1")ではエラーは出ません。
Set Sht2 = Sheets("Sheet2").Range("A1:J1") ←("A1")ではエラーは出ません。
For i = 0 To 65535
If Sht1.Offset(i) <> "" Then ←ここでエラーが出ます"型が違います"
Sht2.Offset(i) = Sht1.Offset(i)
Else
Exit For
End If
Next
End Sub
--------------------------------------------------------------
教えて下さい。お願いします。
No.4ベストアンサー
- 回答日時:
>これを"sheet1"A:Jが空欄になるまでループさせたいのですが、
先の質問では無かった事ですね。
http://oshiete1.goo.ne.jp/qa3790503.html
比較対照が全く違うのでIF文の比較式では対処できないためです。
複数セルを比較するには必用に応じて別の方法を取る必用があり、下記はワークシート関数を使って一括して比較する方法です。
下記でいかがでしょうか?
Sub cpy3()
Dim i As Long
Dim Sht1 As Range
Dim Sht2 As Range
Set Sht1 = Sheets("Sheet1").Range("A1:J1")
Set Sht2 = Sheets("Sheet2").Range("A1:J1")
For i = 0 To 65535
If Application.WorksheetFunction.CountIf(Sht1.Offset(i), "<>") > 0 Then
Sht2.Offset(i) = Sht1.Offset(i)
Else
Exit For
End If
Next
End Sub
>先の質問では無かった事ですね。
すいません。ちょっと自分なりに変えてみたのですが。。。
またまた、ご回答ありがとうございます。
問題なく動きました。流石ですT_T
hana-hanaさんみたいにマスター出来るように精進します^^;
すごく勉強になります。
参考書を買って勉強してるのですが。。。
それを応用しようと思うとうまくいかないのです。。。
No.3
- 回答日時:
#1です。
#2さんのご指摘のとおり見たい。
If IsNull(Sht1.Offset(i)) Then
にしたらどうなりますかね?
No.2
- 回答日時:
Range("A1:J1")のように、複数のセルからなる場合は、Variant型の配列を値として返しますので、暗黙の型変換による比較はうまく行きません。
For/For Eachでセル値をチェックするループを記述するか、ワークシート関数CountBlank()で空白セルをチェックするとか、一手間かける必要があるかと。
まずは、デバッグ>ウォッチ式の追加――等で、Sht2.Offset(i).valueを観測してみては。何故うまく行かないのかが分かると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- その他(プログラミング・Web制作) python文字化けエラーが発生しているようです 3 2022/04/13 19:41
- Excel(エクセル) マクロで特定日より1日前の日を求めたい 6 2022/05/08 09:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
String""から型'Double'への変...
-
UserForm1.Showでエラーになり...
-
エクセルVBA 「On Error GoTo...
-
【VBA】ワークブックを開く時に...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
On ErrorでエラーNoが0
-
VB.net 重複チェックがしたいです
-
VBでSQL文のUPDATE構文を使った...
-
ACCESSで値を代入できないとは?
-
「実行時エラー '3167' レコー...
-
マクロで"#N/A"のエラー行を削...
-
実行時エラー'-2147467259(8000...
-
実行したSQLの結果を返す方法
-
インポート時のエラー「データ...
-
【VB.NET】 パワポ操作を非表示で
-
VBA処理中に途中で止まってしま...
-
マクロの「SaveAs」でエラーが...
-
VB6とVB.NETでNullの扱いが違う?
-
【VBAエラー】Nextに対するFor...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
On ErrorでエラーNoが0
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
VBA データ(特定値)のある最...
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
エクセルVBA 「On Error GoTo...
-
【VBA】ワークブックを開く時に...
-
マクロの「SaveAs」でエラーが...
-
ACCESSで値を代入できないとは?
-
実行時エラー'-2147467259(8000...
-
インポート時のエラー「データ...
-
【VB.NET】 パワポ操作を非表示で
-
Filter関数を用いた結果、何も...
-
UBoundに配列がありませんとエ...
-
Excel vbaについての質問
-
メールの件名のセットでエラー...
おすすめ情報