Excel VBA質問箱 IV

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

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


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

【35797】数式、、、 わか 06/3/13(月) 21:53 質問[未読]
【35799】Re:数式、、、 Kein 06/3/13(月) 22:14 回答[未読]
【35808】Re:数式、、、 わか 06/3/13(月) 23:03 お礼[未読]
【35810】Re:数式、、、 Kein 06/3/13(月) 23:10 回答[未読]
【35811】Re:数式、、、 わか 06/3/13(月) 23:42 お礼[未読]
【35812】Re:数式、、、 Kein 06/3/14(火) 0:29 発言[未読]
【35814】Re:数式、、、 わか 06/3/14(火) 2:18 お礼[未読]
【35805】Re:数式、、、 ponpon 06/3/13(月) 22:34 発言[未読]
【35809】Re:数式、、、 わか 06/3/13(月) 23:09 お礼[未読]

【35797】数式、、、
質問  わか  - 06/3/13(月) 21:53 -

引用なし
パスワード
   はじめまして。
どうしても出来ないので、力を貸してください。

ブックを開くとSheet4が自動作成される用に
してあります。

では本題。
Sheet1に入力スペースが作ってあり、
Sheet2にデータが保存されています。
Sheet3はSheet1で入力した数値をSheet2から捜してくる用に
してあります。

そしてSheet4にSheet3で出た結果をコピーして保存したいのですが、
Sheet2のデータを定期的に変更する為、sheet4にそのままコピーすると
数式が残り、保存した値が変わってしまします。

Sheet4に数式以外の数値、列の幅、罫線など全てコピーすることは可能ですか?

上手く説明できてるかわかんないですけど、用は数式以外の全てをコピーできますか?
もしくは値を残し数式だけを消去する事は可能ですか?
ご存知の方がみえたら是非教えて下さい。

【35799】Re:数式、、、
回答  Kein  - 06/3/13(月) 22:14 -

引用なし
パスワード
   Sheet2からのコピーは「全て」として、もう一度、数式の入力範囲をコピー&値のみ
貼り付けすればよいかと思います。↓いちおうこのようなコードになります。

With Sheets("Sheet4")
  Sheets("Sheet2").Cells.Copy .Range("A1")
  .SpecialCells(3).Copy
  .SpecialCells(3).Range("A1").PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False

【35805】Re:数式、、、
発言  ponpon  - 06/3/13(月) 22:34 -

引用なし
パスワード
   こんばんは。

以下マクロは、シート2のA1にいろいろ書式設定し、
シート4のA1に値と、書式と列幅をコピペします。
参考になれば・・・・はずしたかな?

PasteSpecialを調べると良いと思います。

Sub test()
 
Sub test()
 
 With Sheets("Sheet2")
   With .Range("A1")
      .Formula = "=1+3"
      .BorderAround Weight:=xlThick
      .Interior.ColorIndex = 3
   End With
   .Range("A1").Copy
 End With
 With Sheets("Sheet4")
   With .Range("A1")
      .PasteSpecial Paste:=xlPasteValues
      .PasteSpecial Paste:=xlPasteColumnWidths
      .PasteSpecial Paste:=xlPasteFormats   
   End With
 End With
 Application.CutCopyMode = False

End Sub

【35808】Re:数式、、、
お礼  わか  - 06/3/13(月) 23:03 -

引用なし
パスワード
   レスありがとうございます。

>Sheet2からのコピーは「全て」として、もう一度、数式の入力範囲をコピー&値のみ
>貼り付けすればよいかと思います。↓いちおうこのようなコードになります。
>
>With Sheets("Sheet4")
>  Sheets("Sheet2").Cells.Copy .Range("A1")
↑("Sheet3")ではないんでしょうか?
>  .SpecialCells(3).Copy
>  .SpecialCells(3).Range("A1").PasteSpecial xlPasteValues
>End With
>Application.CutCopyMode = False

試してみたました。
標準モジュールに書き込めばいいんですよねぇ?
Sheet4にSheet3で出た結果がコピーされたんですが、
数式もコピーされていました。

数式がある所だけ、手動で値の付けを選択して貼ればいいんですか?

【35809】Re:数式、、、
お礼  わか  - 06/3/13(月) 23:09 -

引用なし
パスワード
   レスありがとうございます。

>こんばんは。
>
>以下マクロは、シート2のA1にいろいろ書式設定し、
↑こちらもシート3ではないですか?
>シート4のA1に値と、書式と列幅をコピペします。
>参考になれば・・・・はずしたかな?
>
>PasteSpecialを調べると良いと思います。
>
>Sub test()
> 
>Sub test()
> 
> With Sheets("Sheet2")
↑こちらもSheet3ではないですか?
>   With .Range("A1")
>      .Formula = "=1+3"
>      .BorderAround Weight:=xlThick
>      .Interior.ColorIndex = 3
>   End With
>   .Range("A1").Copy
> End With
> With Sheets("Sheet4")
>   With .Range("A1")
>      .PasteSpecial Paste:=xlPasteValues
>      .PasteSpecial Paste:=xlPasteColumnWidths
>      .PasteSpecial Paste:=xlPasteFormats   
>   End With
> End With
> Application.CutCopyMode = False
>
>End Sub


試してみた所、Sheet2とSheet4のA1に赤いセルで4と表示されただけでした。
丁寧に書いていただいたのですが、マクロに関してはかなりの初心者なので、理解できませんでした。
もうちょっとしっかり勉強しますm(__)m

【35810】Re:数式、、、
回答  Kein  - 06/3/13(月) 23:10 -

引用なし
パスワード
   Sheet3 をコピーするのでしたね。で、数式の入力セルを値のみ貼り付けする
コードは、うまくいかなかったのでしょーか ? それならこんなコードで試して
みて下さい。

Sub Test()
  Dim C As Range

  On Error GoTo ELine
  With Sheets("Sheet4")
    Sheets("Sheet3").Cells.Copy .Range("A1")
    For Each C In .Cells.SpecialCells(3)
     C.Value = C.Value
    Next
  End With
ELine:
End Sub

【35811】Re:数式、、、
お礼  わか  - 06/3/13(月) 23:42 -

引用なし
パスワード
   レスありがとうございます。
教えてもらった通りやったら出来ました。
もっと2.勉強しないといけないと再確認しました。

Sub Test()
  Dim C As Range

  On Error GoTo ELine
  With Sheets("Sheet4")
    Sheets("Sheet3").Cells.Copy .Range("A1")
    For Each C In .Cells.SpecialCells(3)
     C.Value = C.Value
    Next
  End With
ELine:
End Sub

お手数ですが時間があれば各部分の意味を教えていただけると幸いです。
ほんとうにありがとうごじました。

【35812】Re:数式、、、
発言  Kein  - 06/3/14(火) 0:29 -

引用なし
パスワード
   On Error GoTo ELine
'エラートラップをかける。これ以降のコードでエラーが
'発生した場合、ELine というラベルのところへ飛ばす

With Sheets("Sheet4")
'Sheet4 シートの処理について記す

  Sheets("Sheet3").Cells.Copy .Range("A1")
  'Sheet3 の全セルをコピーし、A1へ貼り付ける。
  'Copyメソッドの引数を使って貼り付け先を指定するやり方なら
  '必ず「全て貼り付け」になる

  For Each C In .Cells.SpecialCells(3)
  '全セルの中の、数式を入力しているセルだけを SpecialCells
  'メソッドで特定し、その範囲を一つずつループ処理する
  'SpecialCellsメソッドの引数に 3 を渡すのは xlFormulas を
  '指定したのと同じになる

    C.Value = C.Value
    'ループ中のセルの値を、値のみ代入する

   Next
   '次のセルへ移動

End With
'Sheet4 の処理の記述はここまで
 
ELine:
'エラーが発生したときに、ここから下へ制御を移す
'直下は End Sub だからすぐに終了することになる

以上。

【35814】Re:数式、、、
お礼  わか  - 06/3/14(火) 2:18 -

引用なし
パスワード
   わざわざありがとうございます。
参考に勉強させていただきます。

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