これを動作させようとしていましたが、これまでできなかったし、検索したところで、どちらかというと、ここに行く。Excel、VBA:値が1シートで変化したときに他のシートを参照する(交差点)
私は3枚使用しています。
「wsPunting」(値の変更1)
「wsDetail」(すべての完全なデータを持つシート)
「wsData」(私はマクロをつかむ特定のデータを格納シート)
今私がやっているのは、wsPuntingのB2セルでValueが変更されたときです(B2はマクロで作成されたデータ検証であり、これが貴重な情報であるかどうかはわかりませんが、 )、wsDetailでデータをフィルタリングし、カラム "O3:O"を取得し、重複を削除し、wsPuntingのセルB5のデータ検証にそれを割り当てます。
< 20個の値が入力されたときに私はすでに動作するようになっています。今、私がwsDetailで使用しようとしていた実際のデータを貼り付けたとき、私はIntersectで "Type Mismatch"を取得し続けました。
私はすでにそれを修正するかもしれないが、いくつか試してみたが、見つけられないようだ。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
On Error GoTo Booboo
Dim rngFSU As Range
Dim vFSU As Range
Dim wsPunting As Worksheet, wsData As Worksheet, wsDetail As Worksheet
Set wsPunting = ActiveWorkbook.Sheets("Puntingsblad")
Set wsData = ActiveWorkbook.Sheets("Data")
Set wsDetail = ActiveWorkbook.Sheets("Detail")
Set rngFSU = wsPunting.Range("$B$2")
Set vFSU = wsPunting.Range(Target.Address)
'The next line is where it keep dropping the error
If Not Intersect(rngFSU, vFSU) Then
wsDetail.Range("A2", wsDetail.Range("A3").SpecialCells(xlCellTypeLastCell)).AutoFilter Field:=1, Criteria1:=Range("B2").Value
wsDetail.Range("O3", wsDetail.Range("O3").SpecialCells(xlCellTypeLastCell)).Copy
wsData.Range("B2").PasteSpecial xlPasteValues
wsData.Range("B2", wsData.Range("B1").End(xlDown)).RemoveDuplicates Columns:=Array(1)
With wsPunting.Range("B5").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=Data!" & wsData.Range("B2", wsData.Range("B1").End(xlDown)).Address
.IgnoreBlank = True
End With
wsDetail.Range("A2", wsDetail.Range("A3").SpecialCells(xlCellTypeLastCell)).AutoFilter Field:=1
End If
Booboo:
MsgBox err.Description
End Sub
これは私が通常より速く学ぶためにそれを固定し、自分自身を試してみてくださいconcidering、実際に私の最後の手段です。しかし、私はこれほど長い間、これに執着してきました。私は今も気にしません。
事前に乾杯。
ありがとうございます。私はすでにコードがどのように動作しているかを知っていました。私は「何もない」という事実を何とか愚かに逃しました。または、たぶん、タッチパッドのためにノートパソコンで誤って削除してしまった可能性があります。 – SierraA
うん、私たち一人一人に毎日起こるもの。それは喜んで:) –