No.8ベストアンサー
- 回答日時:
#4です。
非表示行のあるシートをコピペしたいのだと解釈しましたが、
回答としてSelection.PasteSpecialで非表示行を飛ばして処理するのは、とびセルになり、コピー元と範囲が違うため無理かと思います。
やはり、Selection.PasteSpecialでなく参照式のが良いと思うのですが。
代替え案 ループ処理による参照式
下記では、ダメですか?
Sub Sample()
Dim i2 As Long, i As Long, j As Long
i = 3: j = 3
i2 = Range("Y2").End(xlDown).Row
Do While j < i2 + 1
If Rows(i).Hidden = False Then
Cells(i, "B") = Cells(j, "Y")
j = j + 1
End If
i = i + 1
Loop
End Sub
値だけでない場合は、Cells(i, "B") = Cells(j, "Y")参照式でなくコピーなどに、、
工夫してください。
この回答を充分に検証しないまま、後の物を試してしまいました。
このコードで完璧に動作するようになりました。
ありがとうございました。
No.11
- 回答日時:
お手数をおかけいたしました。
フィルタで非表示ですか。。そうですね、フィルタを当然想定できますね。。
古い記憶で忘れていましたが、であれば、 Application.Transposeで一気に書き出すのは、多分使えないですね。
#8の方法で1つずつ出力する方法で処理してください。
No.10
- 回答日時:
#9の返信に
気になる点は、
シート情報がないので明示していない。
i2 = Range("Y2").End(xlDown).Row
これは、補足にあるコードですが、Y2に値が入っていないと希望の値を得られません。
検証して不具合を発見しました。
返信にある現象ではありませんが、
配列再構成時、非表示セルの値を抽出する変数値がずれていますね。すみません。
正 Pst(i) = Cells(i+3, 2)
もし、違うのであれば、具体的に示してくださいね。(画像を付けるなどして)
>複数回別セルに代入されてしまうようです。
書き込みは1度しか行っていませんね?
No.9
- 回答日時:
#8 追加
食事しながら、、処理速度など気になったので
値を前提で少し手を加えました。100行くらいなら変わらないと思いますが、
5000とかだと変わるかな。
Sub Sample1()
Dim i2 As Long, i As Long, j As Long
Dim cpy As Variant, Pst() As Variant
j = 1
i2 = Range("Y2").End(xlDown).Row
cpy = Range("Y3:Y" & i2)
Do While j < i2 - 1
ReDim Preserve Pst(i)
If Rows(i + 3).Hidden = False Then
Pst(i) = cpy(j, 1)
j = j + 1
Else
Pst(i) = Cells(i, 2)
End If
i = i + 1
Loop
Range("B3").Resize(UBound(Pst) + 1).Value = Application.Transpose(Pst)
End Sub
取得 cpy = Range("Y3:Y" & i2) と
書き出し Range("B3").Resize(UBound(Pst) + 1).Value = Application.Transpose(Pst) を
纏めました。
回答ありがとうございます。
非表示セルは飛ばして代入されましたがY列の一番上と2番目のデータが複数回別セルに代入されてしまうようです。
No.7
- 回答日時:
>貼り付け時に非表示行にデータが入らないようにしたいです。
ってNo.2のお礼の
>Copy 側は非表示はなく100行ほどの連続データです。
と矛盾してない?
Sheetを変えて又は行をもっとずらして貼り付けてるならともかく、Y列の行は全て表示されているけどB列の行は非表示がある・・・
そんな方法ってあるの?
単なる私の経験不足なのかな?(十数年たっても初級レベルだし)
方法的にはコピペより代入していくのが良いように思いますが、上の件が謎ですねん。
No.6
- 回答日時:
No.1・3です。
Y列の指定範囲内の非表示でない行をB3セルにコピー&ペーストしたい!というコトですね。
Selectせずに
>Range("Y3:Y" & i2).Select
>Selection.Copy
>Selection.PasteSpecial
を
>Range("Y3:Y" & i2).SpecialCells(xlCellTypeVisible).Copy Range("B3")
(書式も含めてすべてがコピー&ペーストされます)
のようにしてはどうでしょうか?m(_ _)m
No.5
- 回答日時:
既に同じ憶測は出ていますが、最初に質問文から『貼り付ける際に非表示行を避けてクリップボードにある情報を貼り付けていきたい』と言うのは読み取れたのですが、
Copyが任意の作業で行われるのか否かもありますので可能なら前後のコード提示も必要なのかもしれませんね。
No.4
- 回答日時:
皆さんの回答にあるようにどのように非表示にしているかによると思いますが
Selection.、、なのでSelectする段階で条件設定をする必要があるかと
ループで行っているのか、フィルター機能で行っているのか、または他の方法で纏めてSelectしているのか、分かりませんが、
Hidden プロパティで判定して飛ばすことは出来そうですが、、
非表示行を飛ばして実行する場合、Selectionは、ふさわしくないかも知れません。
Dim i As Long
For i = 1 To 100
If Rows(i).Hidden = False Then
~~.PasteSpecial
End If
Next
No.3
- 回答日時:
No.1です。
>応答なしになってしまいました。
前回の回答にも記載したのですが、
非表示でないセルに対してどんな操作をやるのか?によってコードは変わってきます。
それが判らなかったので単純にループさせるコードにしましたが、
極端に広い範囲(行全体とか、列全体など)を指定すると
「応答なし」になります。
すなわち何をしたいのか?が判ればもっと具体的なアドバイスができると思います。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAコピー 2 2022/06/08 21:45
- Excel(エクセル) ExcelのVBAコードについて教えてください。 1 2022/06/17 15:40
- Visual Basic(VBA) VBAで列の再表示設定 1 2023/04/25 10:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/07/05 09:30
- その他(Microsoft Office) エクセルVBA 3 2022/06/09 08:04
- Excel(エクセル) 【マクロ】リボン、行列、数式・ステータスバを非表示に 4 2022/12/12 07:32
- Visual Basic(VBA) Excle VBA Findメソッドについて 3 2022/07/15 13:56
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- 教えて!goo 質問履歴と回答履歴を非表示にしたいのですが、確認する方法がわかりません。皆さん私のプロフィールから飛 4 2022/06/15 21:30
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Excelの非表示列も含めてコピー
Excel(エクセル)
-
エクセルVBAで、非表示にした行は飛ばしてスクロールさせる方法を教えて
Visual Basic(VBA)
-
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
-
4
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
5
エクセルVBAでフィルタ抽出部分のみのコピー
Excel(エクセル)
-
6
Excelで、非表示のままコピーしたい。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
EXCELで条件付き書式で空白セル...
-
エクセル指定した範囲からラン...
-
ある範囲のセルから任意の値を...
-
甲状腺が腫れているが血液検査...
-
2つの数値のうち、数値が小さい...
-
小数点以下を繰り上げたものを...
-
リンク先のファイルを開かなく...
-
これって喉仏ですか? 私は女性...
-
一番多く表示のある値(文字列...
-
MIN関数で空白セルを無視したい...
-
勃起する時って痛いんですか? ...
-
Excelで""で囲む方法
-
精子が黄色?
-
EXCELで式からグラフを描くには?
-
アクエリアスが苦く感じる
-
エクセルのラベルの値(文字列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
精子が黄色?
-
EXCELで条件付き書式で空白セル...
-
至急!尿検査前日にオナニーし...
-
これって喉仏ですか? 私は女性...
-
中出しをするとお腹が痛い・・・。
-
甲状腺が腫れているが血液検査...
-
2つの数値のうち、数値が小さい...
-
尿検査前日に自慰行為した時の...
-
EXCELで式からグラフを描くには?
-
小数点以下を繰り上げたものを...
-
ある範囲のセルから任意の値を...
-
口の中に黒い血の塊
-
【Excelで「正弦波」のグラフを...
-
エクセル指定した範囲からラン...
おすすめ情報
コピー、ペースト付近のコードです。
i2 = Range("Y2").End(xlDown).Row
Range("Y3:Y" & i2).Select
Selection.Copy
Range("B3").Select
Selection.PasteSpecial
貼り付け時に非表示行にデータが入らないようにしたいです。
よろしくお願いいたします。
Qchan1962様のNo.9、No.10の通り試した結果正常に動作しました。
私が使用するファイルはA列からO列にフィルタがかけられており、C列の空白欄を非表示にしてあります。
同じ条件にして試したところ、図の結果になりました。