1

私の質問では、セルの横に NULL または "" ではないボタンを作成したいと思います。ボタンのキャプションは、横のセルの値に従う必要があります。

例えば:

  1. 「従業員」と入力しましたRange("D3")
  2. マクロで「EMPLOYEE」という名前のボタンを作成したいRange("C3")
  3. ただし、マクロを動的にして、列「D」に値を入力するたびに、左側のセルにC3ボタンが表示されるようにしたいと考えています。

CommandButtonしたがって、手動でコーディングする必要があることがわかりました。そうですか?

それにもかかわらず、万人に感謝します。

4

2 に答える 2

3

コマンド ボタンを追加してマクロを記録し、それがどのように作成されたかを確認してから、細かい部分を組み込むことができます。OLE コマンド ボタン オブジェクトのプロパティに注意してください。より注意してください。

たとえばtheButton.Name、まだキャプションはtheButton.Object.Captionetcを介して設定されています。

ここにあなたを動かすためのコードスニペットがあります:-

Option Explicit

Sub createButtons()
Dim theButton As OLEObject
Dim rngRange As Range
Dim i As Integer

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set rngRange = Sheets(2).Range("B2")

    For i = 0 To 9
        If rngRange.Offset(i, 0).Value <> "" Then
        With rngRange.Offset(i, 1)
            Set theButton = ActiveSheet.OLEObjects.Add _
                (ClassType:="Forms.CommandButton.1", _
                Left:=.Left, _
                Top:=.Top, _
                Height:=.Height, _
                Width:=.Width)

                theButton.Name = "cmd" & rngRange.Offset(i, 0).Value
                theButton.Object.Caption = rngRange.Offset(i, 0).Value

                '-- you may edit other properties such as word wrap, font etc..
      End With
      End If
    Next i

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

出力:

ここに画像の説明を入力

于 2012-12-21T19:37:34.550 に答える
2

これを試してみてください。

Public Sub Worksheet_Change(ByVal Target As Range)
    Dim col As Integer
    Dim row As Integer

    col = Target.Column
    row = Target.row

    If Not IsNull(Target.Value) And Not IsEmpty(Target.Value) Then
        Application.EnableEvents = False
        Buttons.Add Cells(row, col - 1).Left, Cells(row, col - 1).Top, Cells(row, col - 1).Width, Cells(row, col - 1).Height
        Application.EnableEvents = True
    End If
    End Sub

[開発者]タブ->[VisualBasic]を開き、[シート1]をダブルクリックして、このコードをそこに貼り付けます。Sheet1のセルにテキストを入力し、そのセルから移動してテストします(たとえば、Enterキーを押します)。

于 2012-12-21T19:50:45.283 に答える