|
皆様初めて投稿いたします。よろしくお願いします。
以下のコードを書きました。(作りかけ)
Option Explicit
Dim R As Range
----------------------------------------------------------------------
Private Sub Worksheet_Activate()
With Worksheets("Sheet1")
.Range("A1").AutoFilter Field:=1, Criteria1:=1
If .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible) _
.Rows.Count = 1 Then
test3
Else
test2
End If
End With
End Sub
---------------------------------------------------------------------
Private Sub test2()
Set R = Worksheets("Sheet1").Range("A1").CurrentRegion
With R
.Resize(.Rows.Count - 1).Offset(1).Copy
Worksheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteValues
End With
R.AutoFilter
End Sub
----------------------------------------------------------------------
Private Sub test3()
With Worksheets("Sheet1")
MsgBox "対象データがありません。"
.Activate
Selection.AutoFilter
End With
End Sub
Sheet1の列Aは見出し項目(A1)以外ブランクにしておいて、使用者がコピー
したいデータの列Aに「1」を入力してもらい、Sheet2に切り替えるとデータが
張り付いているという動作をしたいのですが、
1.「1」がひとつも入力されていないと”対象データがありません”が表示
され、かつすべてのデータがSheet2に張り付いてしまう。
2.「1」がいくつか入力されていても、セル「A2」がブランクだったり、「1」
以外の数値がはいっていると、”対象データありません”になってしまう。
うまくいくのはセル「A2」に「1」が入っているときだけです。
IF文が問題だと思うのですが・・いろいろ調べてもわかりません。
どうかどうかよきアドバイスをお願いします。
|
|