Excel VBA質問箱 IV

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

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


58189 / 76732 ←次へ | 前へ→

【23275】Re:空白セルを詰めてコピーについて
発言  ichinose  - 05/3/18(金) 7:27 -

引用なし
パスワード
   ▼浜口 さん:
おはようがざいます。
私の方では、Excel2000、Excel2002で確認しましたが、
浜口 さんが意図するような結果が表示されています。


>>'===================================
>>Sub test()
>>  Dim ans As Range
>>  On Error Resume Next
>>  Set ans = Range("a2:e2").SpecialCells(xlCellTypeFormulas, xlNumbers)
>>  If Err.Number = 0 Then
    msgbox ans.address
' これで変数ansにどんなセル範囲が入っていますか?
' こちらで確認すると、「$A$2:$B$2,$D$2:$E$2」と表示されます
>>   ans.Copy
>>   Range("a4").PasteSpecial xlPasteValues
>>   Application.CutCopyMode = False
>>   End If
>>  on error goto 0
>>End Sub
>>これで確認してみて下さい。
>
>試してみましたが、やはりダメでした。
>
>ちなみに、ご伝授の式にある[Err.Number = 0 ]というのは
>どんなエラーの場合なのでしょうか?
Set ans = Range("a2:e2").SpecialCells(xlCellTypeFormulas, xlNumbers)

でセル範囲A2:E2の中で数式の結果が数値のセル範囲を取得しています。
Err.Number=0は、エラーが発生せずに正常にセル範囲が取得できた場合だけ
処理を行うようにしています。
エラーになる場合は、A2:E2がすべて""だった場合です。
浜口 さんが提示された例だと・・・、
A1:E1が 1,2,0,3,4で
A2:E2の数式が=IF(A1=0,"",A1)と言うことで
結果、1,2,,3,4という表示がされているとの事ですから、
この場合は、変数ansに結果が数値のセル範囲($A$2:$B$2,$D$2:$E$2)
が格納されるはずなのです。

>素人ですみません。
>というのも、ご伝授の式ですと
>エラー0でない場合は、処理を中止するという意味ではないでしょうか?
>
>色々試行錯誤してますが、
>どうも、関数式で得られた空白セルから
>コピー ⇒ 値のみ貼り付け
>ですと、
>空白セルとは、認知していないようです。
>何か方法が、他にないでしょうか?
Excelのバージョンは何でしょうか?
2003だとしたら、確認はしていませんが・・・。

2 hits

【23267】空白セルを詰めてコピーについて 浜口 05/3/17(木) 21:30 質問
【23271】Re:空白セルを詰めてコピーについて ichinose 05/3/17(木) 23:37 発言
【23274】Re:空白セルを詰めてコピーについて 浜口 05/3/18(金) 1:41 発言
【23275】Re:空白セルを詰めてコピーについて ichinose 05/3/18(金) 7:27 発言
【23276】Re:空白セルを詰めてコピーについて 追伸 ichinose 05/3/18(金) 7:57 発言
【23346】Re:空白セルを詰めてコピーについて 追伸 浜口 05/3/19(土) 2:09 お礼

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