2

SQL と VFP から情報を取得し、A1 を除く列 "A" のすべてのセルにドロップダウン リストを作成するコードがあります。これはヘッダーです。

ユーザーが「A」列のドロップダウンから値を選択する行に「G」列を入力する必要があります。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)シートオブジェクトにある必要があると思います。

以下は、私がやりたいことに似たものです。

If cell "a2".valuechanged then
    Set "g2" = "8000"
End if
If cell "a3".valueChanged then
    Set "g3" = "8000"
End if

上記のコードは動作しませんが、理解しやすいと思います。これを動的にしたいので、コード行が多すぎません。

4

4 に答える 4

4

HEREを使用する上で注意が必要なイベントやその他のことについては、すでに説明しましたWorksheet_Change

Intersectwith を使用しWorksheet_Changeて、ユーザーが変更したセルを確認する必要があります。

これはあなたがしようとしていることですか?

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Whoa

    '~~> Check if user has selected more than one cell
    If Target.Cells.CountLarge > 1 Then Exit Sub

    Application.EnableEvents = False

    '~~> Check if the user made any changes in Col A
    If Not Intersect(Target, Columns(1)) Is Nothing Then
        '~~> Ensure it is not in row 1
        If Target.Row > 1 Then
            '~~> Write to relevant cell in Col G
            Range("G" & Target.Row).Value = 8000
        End If
    End If

Letscontinue:
    Application.EnableEvents = True
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume Letscontinue
End Sub
于 2013-11-05T17:41:12.177 に答える
1

これを試して

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Row > 1 And Target.Column <> 7 Then
    Cells(Target.Row, "G").Value = 8000
  End If
End Sub

列Aで起動するだけでよい場合は、

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Row > 1 And Target.Column = 1 Then
    Cells(Target.Row, "G").Value = 8000
  End If
End Sub
于 2013-11-05T17:41:18.927 に答える
0

のように、列 G に if ステートメントを入れることはできませんか

もし (A1<>"", 8000,0)

そうでなければ、このような何かがあなたを動かします:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 1 Then
If Target.Value2 <> "" Then
Target.Offset(0, 6) = "8000"
Else
Target.Offset(0, 6) = ""
End If
End If
On Error GoTo 0
End Sub

ありがとうロス

于 2013-11-05T17:41:08.800 に答える