2

現在、複数のシートに分割しているデータがあり、ユーザーがマクロを実行するシートを選択できるようにしています。ワークシートは、複数のシステム間のフィルターとして使用されます

データを日ごとにグループ化する名前付き範囲 (dayList) があり、日ごと (day1、day2 など) に新しいシートを作成します。次に、各シートに別のマクロ (画面データ) を適用して、これらの各シートのデータをまったく同じ方法でフィルター処理する必要があります。

ユーザーが名前付き範囲内のセルの 1 つをクリックして、その特定の日のマクロを実行できるようにする UI を作成しようとしています。現在使用しているコード スニペットは以下のとおりです。

 Sheets("LaunchScreen").Activate
    Cells(rowCounter, 6).Value = "Day" & dayCounter
    ActiveSheet.Buttons.Add(538.5, 56.25, 48.75, 13.5).Name = "Day" & dayCounter
    ActiveSheet.Buttons("Day" & dayCounter).Select
    Selection.OnAction = "JoinTransactionAndFMMS"

これをループして、毎日新しいボタンを作成し、ボタン名をパラメーターとして別のマクロに渡して、このワークブックで同じ名前を共有するワークシートを見つけます。

TLDR: 私はする必要があります:

  1. VBAを使用してボタンの位置を設定します。できれば位置をセル参照に一致させます。 Range("A1").Button.Insert
  2. 名前付き範囲からマクロにセル参照を渡す

ここで彼の頭の上にある優れた初心者。どんな助けでも大歓迎です!

4

1 に答える 1

2

1) .Add メソッドには 4 つのパラメーターが必要です。最初の 2 つはボタンの UPPER LEFT コーナーを取得するための TOP と LEFT の位置で、3 番目と 4 番目はボタンの高さと幅の設定です。

したがって、ボタンを追加したいことがわかっていて、参照がセル C10 (A1 よりも良い例) に配置することである場合は、次のようになります。

ActiveSheet.Buttons.Add(Range("C10").Top, Range("C10").Left, 48.75, 13.5).Name = "Day" & dayCounter     

2) マクロは、最初に「渡される」パラメータを受け入れるように設計する必要があります。だから、次のようなもの

Sub MyMacro(MyRange As Range)
    MsgBox MyRange.Address
End Sub

これで、他のマクロがMyMacroを呼び出すことができ、呼び出されたときにパラメーターを渡す必要があります。

Sub test2()
   Call MyMacro(Range("Animals"))
End Sub
于 2012-05-09T10:11:39.347 に答える