Excel VBA質問箱 IV

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

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


2555 / 13645 ツリー ←次へ | 前へ→

【67247】度々すみません、「セルへの追加の貼り付け」 まめ 10/11/17(水) 14:03 質問[未読]
【67248】Re:度々すみません、「セルへの追加の貼り... UO3 10/11/17(水) 14:10 回答[未読]
【67249】Re:度々すみません、「セルへの追加の貼り... まめ 10/11/17(水) 14:21 発言[未読]
【67250】Re:度々すみません、「セルへの追加の貼り... UO3 10/11/17(水) 14:30 回答[未読]
【67288】遅くなり申し訳ありません。 まめ 10/11/20(土) 21:35 お礼[未読]

【67247】度々すみません、「セルへの追加の貼り付...
質問  まめ  - 10/11/17(水) 14:03 -

引用なし
パスワード
   1つのセルに「追加」して貼り付けていく方法が分からずに困っています。

1 休        1 休 235
2 出        2 出
3 出     ⇒   3 出
4 休  マクロ実行 4 休
5 出        5 出

上記の「B列」が「出」だったら「A列」の値を「C1セル」に追加して貼り付けていくという物を作りたいのですが、1つのセルに「追加」して貼り付けを行う方法がわかりません。

私の知っている方法ではセルが上書きされていくコピーになってしまいます。
試しに手動で行いマクロ記録を行いましたが散々な結果でした・・・

度々で恐縮ですが、皆様の知識を拝借できましたらありがたく思います。

【67248】Re:度々すみません、「セルへの追加の貼...
回答  UO3  - 10/11/17(水) 14:10 -

引用なし
パスワード
   ▼まめ さん:

こんにちは
はずしているかもしれませんが、以下のようなことですか?

Sub 置換()
 Range("C1").Value = "ABC"  '準備
 Range("C1").Value = "XYZ"
End Sub

Sub 追加()
 Range("C1").Value = "ABC"  '準備
 Range("C1").Value = Range("C1").Value & "XYZ"
End Sub

【67249】Re:度々すみません、「セルへの追加の貼...
発言  まめ  - 10/11/17(水) 14:21 -

引用なし
パスワード
   ▼UO3 さん:
>▼まめ さん:
>
>こんにちは
>はずしているかもしれませんが、以下のようなことですか?
>
>Sub 置換()
> Range("C1").Value = "ABC"  '準備
> Range("C1").Value = "XYZ"
>End Sub
>
>Sub 追加()
> Range("C1").Value = "ABC"  '準備
> Range("C1").Value = Range("C1").Value & "XYZ"
>End Sub

レスありがとうございます、いま上記を元に出来ないか試行錯誤しております、

問題のコードを一部抜粋しました

For i = 3 To 8
ActiveWorkbook.Worksheets("シフト").Activate
If Not (Cells(3, intXLine).Value = "" Or Cells(3, intXLine).Value = "明" Or Cells(3, intXLine).Value = "休" Or Cells(3, intXLine).Value = "特" Or Cells(3, intXLine).Value = "有") Then
'MsgBox Cells(3, intXLine).Value + "出勤日は処理する"
  If Cells(i, 1).Value <> "" Then
  Cells(i, 1).Copy
  ActiveWorkbook.Worksheets(ws).Activate
  Range("C4").PasteSpecial
'Else
'MsgBox "明休特有と空白"

8 9 10行目が問題の場所となっています。

【67250】Re:度々すみません、「セルへの追加の貼...
回答  UO3  - 10/11/17(水) 14:30 -

引用なし
パスワード
   ▼まめ さん:
こんにちは

Copy / Paste(あるいはPasteSpecial)では、ないてもわらっても(?)置き換えになります。

Cells(i, 1).Copy
ActiveWorkbook.Worksheets(ws).Activate
Range("C4").PasteSpecial

この3行を

With Worksheets(ws).Range("C4")
.Value = .Value & Cells(i, 1).Value
End With

または

Worksheets(ws).Range("C4").Value = Worksheets(ws).Range("C4").Value & Cells(i, 1).Value

でいけるのでは?

それはそうとして、シートをSelectしたりActivateしたりして、そのシートのセルを
シート修飾せずに扱うコードは、特に複数のシートを相手にする処理では、バグが発生しがちです。

シート.セル といった記述で処理することをお奨めします。

【67288】遅くなり申し訳ありません。
お礼  まめ  - 10/11/20(土) 21:35 -

引用なし
パスワード
   お礼遅くなり申し訳ありません。
ご教授頂いた方法でうまく行き、完成まであと1歩だったコードが
UO3さんのお陰で出来上がりました。

質問した内容以外にも、「シート.セル といった記述で処理すること」といった
情報まで教えていただき本当にありがとうございました。

今後ともよろしくお願い致します。
この度は本当にありがとうございました!ぺこ <(_ _)>

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