ある表(A3:X5000とします。)で、フィルタで絞り込んだ状態の表(Aの先頭行:Xの最終行)を選択し、別のシートにコピーする方法を探しております。
表があるシートを”作業”、コピー先のシートを”データ”とします。
”データ”に上記内容のボタンを作り、それを押すと”作業”からコピーして”データ”のA2にペーストするようにしたいのですが、なかなかうまくいきません。
ペーストしたいのは、表の値です。
先人様が作った同じようながあったのでそれを拾ってなんだかんだやってみたのですが、
どうやってもエラー400になってしまい困っております。
以下がそのマクロです。
Public Sub テスト()
Dim gyouue As String
Dim gyoushita As String
Dim sentou As String
Dim saikoubi As String
Dim hani As String
Sheets("作業").Select
Range("A4").Select
Selection.End(xlDown).Select
gyouue = ActiveCell.Row
sentou = "A" & gyouue
'Selection.End(xlDown).Select
Range("A65536").Select(←私はexcel2010なのですが、拾った先が2003なのでそのままにしてます)
Selection.End(xlUp).Select
gyoushita = ActiveCell.Row
saikoubi = "X" & gyoushita
hani = sentou & ":" & saikoubi
Range(hani).Select
Selection.Copy
Sheets("データ").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ちなみに、私はVBA初心者です。
上記内容は調べながらやったので、”なんとなく”わかる程度です。
詳しい方のお力添えを頂ければ幸いです。
拙い文章で私がやりたいことが伝わっているかどうか不安ではありますが、
もっと必要な情報がありましたら、都度返信致しますので、
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
No.1です。
もしかしてシートモジュールにしていませんか?
前回のコードの場合オートフィルタの設定をしていないとエラーになりますので、
コードを少し変えてみました。
↓のコードを標準モジュールにしてみてください。
Sub Sample2()
Dim lastRow1 As Long, lastRow2 As Long
Dim myRng As Range, wS As Worksheet
Set wS = Worksheets("データ")
With Worksheets("作業")
If .AutoFilterMode Then '//追加★//
If .AutoFilter.FilterMode Then
lastRow2 = wS.Cells(Rows.Count, "A").End(xlUp).Row
If lastRow2 > 1 Then
Range(wS.Cells(2, "A"), wS.Cells(lastRow2, "X")).ClearContents
End If
lastRow1 = .Cells(Rows.Count, "A").End(xlUp).Row
Set myRng = Range(.Cells(4, "A"), .Cells(lastRow1, "X"))
myRng.SpecialCells(xlCellTypeVisible).Copy wS.Range("A2")
Else
MsgBox "絞り込まれていません"
End If
Else
MsgBox "オートフィルタが設定されていません"
End If
End With
End Sub
今度はどうでしょうか?m(_ _)m
おおおお!できました!
シートモジュールと標準モジュールの違いすらわかってませんでした…
まだまだ勉強が足りませんね^^;
ありがとうございます!
ほんとうに助かりました!
No.1
- 回答日時:
こんばんは!
まず、変数の宣言に間違いがあります。
String型の「文字列型」の宣言を整数型の「Integer」または長整数型の「Long」にしなければならないと思います。
他の方がお考えになったコードに手を加えるのは好きではないので
勝手にコードを考えてみました。
標準モジュールです。
Sub Sample1()
Dim lastRow1 As Long, lastRow2 As Long
Dim myRng As Range, wS As Worksheet
Set wS = Worksheets("データ")
With Worksheets("作業")
If .AutoFilter.FilterMode Then
lastRow2 = wS.Cells(Rows.Count, "A").End(xlUp).Row
If lastRow2 > 1 Then
Range(wS.Cells(2, "A"), wS.Cells(lastRow2, "X")).ClearContents
End If
lastRow1 = .Cells(Rows.Count, "A").End(xlUp).Row
Set myRng = Range(.Cells(4, "A"), .Cells(lastRow1, "X"))
myRng.SpecialCells(xlCellTypeVisible).Copy wS.Range("A2")
End If
End With
End Sub
※ オートフィルタで絞り込まれていない(フィルタがかかっていない)と何も変化がありません。
(単にオートフィルタの設定だけでは変化なし)
こんな感じで良いのでしょうか?
※ お示しのコードを詳しく見てないので
間違っていたらごめんなさい。m(_ _)m
できませんでした。。
いただいたものまるっとコピペで使ってみましたが、エラー400になりました。
フィルタはかかっています。
何がいけないんでしょう。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Excel(エクセル) excelVBAについて。 8 2022/12/11 13:47
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
オートフィルタで抽出したデー...
-
エクセルで行の自動非表示の方法は
-
エクセル VBA VLOOKUP
-
EXCELで2つのファイルから重複...
-
エクセルで名簿を50音で切り分ける
-
エクセルのカメラ機能について
-
時間帯の重複を除いた集計について
-
別々のシートの表をピボットテ...
-
ファンモータが作動しない。
-
【エクセルマクロ】複数シート...
-
EXCEL 複数行のデータを1行にま...
-
(VBAにて)日付でデータを抽出す...
-
Excelで日付変更ごとに、自動的...
-
エクセルVBAで、特定文字から始...
-
VBAで CTRL+HOMEの位置へ移動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数シートからデータを拾って...
-
エクセルファイルのシート毎の容量
-
Excelでシートの違うデータでグ...
-
excelの不要な行の削除ができな...
-
シート削除して同名シート追加...
-
Excelで日付変更ごとに、自動的...
-
EXCELで2つのファイルから重複...
-
VBAで CTRL+HOMEの位置へ移動...
-
オートフィルタで抽出したデー...
-
トランジスタの選び方
-
ファンモータが作動しない。
-
EXCEL 複数行のデータを1行にま...
-
別々のシートの表をピボットテ...
-
エクセルのカメラ機能について
-
エクセル マクロ "特定の日付...
-
他のシートの一番下の行データ...
-
(VBAにて)日付でデータを抽出す...
-
エクセルVBAで、特定文字から始...
-
【エクセル」 特定のセルで条件...
-
EXCEL の表を一行ずつシートに...
おすすめ情報