2016-04-29 7 views
0

アイテムの名前を選択すると、追加情報を含むテキストボックスが表示されるデータベースを設計しようとしています。 フィルタリングを導入するまで、うまく動作しました。フィルタリングではフィルタによって除外された行の一部が削除されるため、選択したセルの横には表示されなくなりますが、フィルタの前の位置に表示されます。フィルタシートに配置する形状

私は現在持っているコードは次のとおりです。

Option Explicit 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Dim strTitle As String 
Dim strMsg As String 
Dim sTemp As Shape 
Dim ws As Worksheet 
Dim wsMsg As Worksheet 
Dim rngMsg As Range 

Application.EnableEvents = False 
Set ws = ActiveSheet 
Set wsMsg = Sheets("BackEnd") 
Set sTemp = ws.Shapes("txtInputMsg") 
Set rngMsg = wsMsg.Range("SelInList") 
On Error Resume Next 

wsMsg.Range("SelCell").Value = Target.Address(0, 0) 
If Len(rngMsg.Value) > 0 Then 
    strMsg = rngMsg.Value 
    sTemp.TextFrame.Characters.Text = strMsg 
    With ActiveSheet.Shapes("txtInputMsg") 
     .Left = Range("A:O").Width + 1 
     .Top = Range("1:iActiveCell.Row").Height + 1 
    End With 
    sTemp.Visible = msoTrue 
Else 
    sTemp.TextFrame.Characters.Text = "" 
    sTemp.Visible = msoFalse 
End If 

errHandler: 
    Application.EnableEvents = True 

End Sub 

私は形状の.Topプロパティを割り当てるには、さまざまな方法を試してみましたが、私は私のために働いていた方法を見つけたことはありません。

答えて

0

は、選択したセルの右上隅の位置に正確に形状を配置する

With ActiveSheet.Shapes("txtInputMsg") 
    .Left = Target.offset,(0,1).left 
    .Top = target.top 
End With 

を試してみてください。オフセットを変更するか、固定値の列(例:.left = column(7).left)を使用してください。

関連する問題