2

範囲内のセルの最初の3文字が別のセルの内容と等しい場合、列を非表示にするコードを記述しようとしています。範囲内のセルがこのように空白の場合に列を非表示にするためのコードがあります;-

Private Sub Worksheet_Change(ByVal Target As Range)

Dim r As Range, cell As Range
On Error GoTo ErrHandler
Set r = Me.Range("C8:R8")
Application.ScreenUpdating = False
Application.EnableEvents = False

For Each cell In r
    If cell.Value = "" Then
    cell.EntireColumn.Hidden = True
    Else
    cell.EntireColumn.Hidden = False

    End If

    Next

ErrHandler:
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

そして、セルの最初の3文字を識別するためのコード;-

Dim LResult As String

LResult = Left ("Alphabet",3)

しかし、「アルファベット」ではなく特定のセルを参照して、2つを組み合わせるにはどうすればよいですか?

これを機能させることはできません-何か提案はありますか?

Private Sub Worksheet_Change(ByVal Target As Range)

Dim r As Range, cell As Range

On Error GoTo ErrHandler
Set r = Me.Range("B7:CG7")

Application.ScreenUpdating = False
Application.EnableEvents = False

Row = 1
col = 1

For Each cell In r
  If cell.Value = "" And Left(cell.Value, 3) = cell(Row, col).Value Then
    cell.EntireColumn.Hidden = True
  Else
    cell.EntireColumn.Hidden = False

End If


Next
ErrHandler:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

乾杯

4

1 に答える 1

4

ほぼ機能するコードがあります。cell.Valueを空の文字列と比較しています-今はLeftを適用するだけです

LResult = Left (cell.Value,3)

編集:

row = 20
col = 30

For Each cell In r
  If cell.Value = "" and  Left (cell.Value,3) = Cell(row, col).Value Then
    cell.EntireColumn.Hidden = True
  Else
    cell.EntireColumn.Hidden = False

End If

行と列のセルからのデータが必要な場合(例として20、30を使用しました)

于 2009-10-28T11:57:07.627 に答える