お世話になっております。
別シートの文字を別シートに入力する際に空白のセルはそのまま空白にする処理についてご教示をお願い致します。
sheet1、C2からC11まで従業員の氏名が入力されております。
これをsheet2、B5からB14までコピーするプログラムをサイトを参考に作りました。
Sub test()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")
sh2.Range("B5:B14").Value = sh1.Range("C2:C11").Value
End Sub
これで入力出来る様にはなったのですが、sheet2の従業員のセルを削除した際に、ここで同様にsheet1の従業員の氏名も消します。
このプログラムですとsheet2の氏名セルを削除致しますと下にある違うデータが入力されているセルが上に上がり上記のプログラムを実行しますと消したくないデータセルまで白くなってしまいます。
セルを結合しているセルなどがありそのセルがこの範囲に入ると白くなります。
上記のプログラムですと当然の結果だと思うのですが、これを消さない方法のプログラムを教えて欲しい内容になります。
よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
実行行は以下で良いかと思います。
結構厄介ですが、上手く行くと思います。
'Sheet1のC2以下の有効最終行を求める
END11 = Sh1.Range("C2").End(xlDown).Row
'Sheet1のC2~有効最終行までの行数を求める
行数 = END11 - Sh1.Range("C2").Row + 1
'Sheet2のB5以降の有効最終行を求める
END21 = Sh2.Range("B5").End(xlDown).Row
'Sheet2のB5~有効最終行を一旦削除
Sh2.Range("5:" & END21).Delete
'Sheet2のB5以降に行を追加しながら転送
For i = 1 To 行数
Sh2.Range("B" & 5 + i - 1).EntireRow.Insert
Sh2.Range("B" & 5 + i - 1).Value = Sh1.Range("C" & 2 + i - 1).Value
Next i
No.3
- 回答日時:
>>Sh2.Range("B5:B14").Value = Sh1.Range("C2:C11").Value
B5:B14は範囲が変動する、と言う事ですか?
B5以下に、「Sheet1のC2以下の有効分」を詰めて並べたい訳ですか?
3個しか無かったら、Sheet2は「B5,B6,B7」に埋めたい?
つまり、下図の様にしたい???
もしそうなら、Sheet1のJさんより下は少なくとも1個は空白セルが無いと自動では上手く行きません。
Sheet1のC2:C11も変動する、と言ってる訳ですから・・・。
No.2
- 回答日時:
やっぱり解りません。
どうしたいんだろう??です。>>sheet2の従業員のセルを削除した際に、ここで同様にsheet1の従業員の氏名も消します。
ここに言いたい事が書いて有る、様な気もします。
>>sheet2の従業員のセルを削除した際
sheet2はセル削除、つまり行ごと削除するんですね?
>>同様にsheet1の従業員の氏名も消します。
sheet1は削除とか行ごと削除では無く、「従業員の氏名」をクリアするんですね??
Aさん、Bさん、Cさん、Dさん、Eさん、Fさん、Gさん、となってたら
Aさん、Bさん、Cさん、Dさん、ブランク、ブランク、Gさん、とする訳なんですか??
自分の思ってる事を正確に相手に伝えるのは、大変に難しいです。
でも、頑張って伝えて下さい。
言葉足らずなご説明で申し訳ございません。
再度細かく質問の内容を述べさせていただきます。
sheet1のC2からC11まではAさんからJさんが入力されております。
その従業員氏名データをsheet2のB5からB14まで出力致します。
ここでsheet2のEさん、Fさんセルを削除しsheet1の氏名セルのC6にGさん、C7にHさんとセルを上にずらしC2からC9にAさん、Bさん、Cさん、Dさん、Gさん、Hさん、Jさん、Iさんと入力をします。
ここでvbaを実行致しますとプログラムされておりますC2からC11のC10とC11のセルが空欄、またsheet2のB5からB14に下にある「引継ぎ表」のセルが上に上がる為、指定範囲と重なりセルの文字が消える問題が出ております。
当たり前の事なのですが。
この担当従業員が変わる際にVBAのプログラムの指定範囲を毎回毎回変えるのは大変なので入力されている文字のセルは消さない方法があればご教示をいただきたい質問になります。
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) セルの値からファイルを複数作りたい2 3 2022/10/07 15:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
Excel VBA コンボボックスで空...
-
複数セルに〇印をつけるマクロ
-
【VB.NET】DataGridViewセルの...
-
GridViewの行選択イベントを発...
-
マウスを乗せたときにセルの色...
-
エクセルの取り消し線を検出す...
-
VBA サンダーバードのメール自...
-
Excelマクロで空白セルの大小比...
-
MSFlexGridでのセル結合について
-
クリップボードの内容を変数に...
-
Excel 入力規則のリストのカー...
-
マクロについて質問です 範囲内...
-
EXCELで特定のセルに表示...
-
E列のセルに数値が入れば(空白...
-
エクセル: セルの枠を超えて表示
-
エクセルのセル内に全角数字を...
-
IF関数で空欄("")の時、Null...
-
エクセル:マクロ「Application...
-
エクセルのセル内の余白の設定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
Excel 入力規則のリストのカー...
-
マウスを乗せたときにセルの色...
-
クリップボードの内容を変数に...
-
Excel VBA コンボボックスで空...
-
複数セルに〇印をつけるマクロ
-
DataGridViewでセルを結合したい
-
GridViewの行選択イベントを発...
-
【VB.NET】DataGridViewセルの...
-
VBA サンダーバードのメール自...
-
VBA 別ブックから条件に合うも...
-
Excelマクロで空白セルの大小比...
-
マクロについて質問です 範囲内...
-
【VBA】セルが空白の場合に処理...
-
VB2005 DATAGRIDVIEWでの矢印キ...
-
■EXCEL(二つのセルの文字列を一...
-
SPREADで1つのセルに複数のチ...
-
vba、targetのRow,Colomnの値取得
-
エクセル チェックボックスの...
-
VBA 文字列を1文字ずつ調べて"...
おすすめ情報
削除前の図になります。
従業員Dさん、Eさんセルを削除してもこの様にしたいです。