別のシートから範囲を設定したドロップダウンリストを作成しようとしています。しかし、私がしたいのは、完全なリストを表示することです。ユーザが項目を選択すると、そのセルにダッシュの前にあるすべての文字が入力されます。完全なドロップダウンリストを表示しますが、「 - 」の前に文字でフィールドを設定しますか?
だから、「David - Project Manager」を選択したら、セルに「David」だけを入力し、ダッシュの後にすべてを削除します。後はすべて物事を見やすくするためだけにあります。
別のシートから範囲を設定したドロップダウンリストを作成しようとしています。しかし、私がしたいのは、完全なリストを表示することです。ユーザが項目を選択すると、そのセルにダッシュの前にあるすべての文字が入力されます。完全なドロップダウンリストを表示しますが、「 - 」の前に文字でフィールドを設定しますか?
だから、「David - Project Manager」を選択したら、セルに「David」だけを入力し、ダッシュの後にすべてを削除します。後はすべて物事を見やすくするためだけにあります。
答えはContextures Videoです。
シートに必要なコードへのリンクが、ダウンロード可能なXLSファイルにあります。
Option Explicit
' Developed by Contextures Inc.
' www.contextures.com
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo errHandler
If Target.Cells.Count > 1 Then GoTo exitHandler
If Target.Column = 6 Then
If Target.Value = "" Then GoTo exitHandler
Application.EnableEvents = False
Target.Value = Worksheets("codes").Range("C1").Offset(Application.WorksheetFunction.Match(Target.Value, Worksheets("codes").Range("activitycodes"), 0) - 1, -2)
End If
exitHandler:
Application.EnableEvents = True
Exit Sub
errHandler:
If Err.Number = 13 Or Err.Number = 1004 Then
GoTo exitHandler
Else
Resume Next
End If
End Sub
Data Validation
でこれを行うことはできません。検証済みのセルを修正するのにVBAを使うことができますが、それは有効性を損なうでしょうか?Data Validation
が完全なエントリを提供する妥協については、隣接するセルがあなたの要件に合わせてトリミングします。 A1
=IFERROR(TRIM(LEFT(A1,SEARCH("-",A1)-1)),A1)
はVBAがこれらの要件の周りに行くことができるので、検証を破壊しないData Validation
VBAメソッドを含む細胞です。調整するDVとセルの範囲を仮定するとB2である:マクロシートモジュールに行くこと
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
If Not Intersect(Target, Range("B2:B100")) Is Nothing Then
For Each cell In Intersect(Target, Range("B2:B100"))
If InStr(1, cell.Value, "-") > 0 Then
Application.EnableEvents = False
cell.Value = Trim(Left(cell.Value, InStr(1, cell.Value, "-") - 1))
Application.EnableEvents = True
End If
Next cell
End If
End Sub
:B100は、これを試してみてください。
この作業を行うことはできません。私が変更したのは、リストの値を保持する名前付き範囲を参照するRangeです。私は間違って何をしていますか? – toolshed
が間違っている場合は、DVドロップリストを使用しているシート上のセルを参照するように範囲を変更します。このマクロがそのシートモジュールにあることを確認してください。 –