【行いたいこと】
「相対参照」を維持しつつ、「手入力を追従する」ようにしたいです。
【現在の状況】
現在、excelで複数のセルに1つずつスピンボタンを設置し、
同じセル内に数字を入力しています。
例えば、A1のセルにスピンボタンを設置、そのボタンを押すとA1の数字が増減する。
同様にA2のセルにもスピンボタンを設置、そのボタンを押すとA2の数字が増減する。
・・・といった具合です。
コピペして複数のセルにスピンボタンを設置する必要性があるため、
数値が入力されるセルは「絶対参照」ではなく、マクロを使って
「相対参照」にしています。
以下、相対参照にしているコードです。
-----ここから-----
Sub macro1()
With ActiveSheet.Shapes(Application.Caller)
.TopLeftCell.Offset(0, 0) = .OLEFormat.Object.Value
End With
End Sub
-----ここまで-----
今現在、「相対参照」については、上記のコードでできていますが、
「手入力を追従する」の部分が全くできていません。
仮にセルに「25」と入力しても、スピンボタンを1回押すと
「1」と表示されてしまうため、25回スピンボタンを押している状態です。
スピンボタンを設置しているセルに任意の数字を入力し、
その後、スピンボタンを押すことで、その数字から1つずつ増やしたいのです。
例えば、「25」と手入力し、その後スピンボタンを押す毎に
26→27→28・・・と変化させたいのです。
「相対参照」を維持しつつ、「手入力を追従する」方法があれば教えてください。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
シートモジュールに
Private Sub Worksheet_Change(ByVal Target As Range)
Dim shp As Object
For Each shp In ActiveSheet.Shapes
If Target.Address = shp.TopLeftCell.Address Then
shp.OLEFormat.Object.Value = Target.Value
End If
Next
End Sub
複数セルの変更には対応していません。
必要なら Target についてもループするように変更するだけです。
なお、先のマクロを走らせた場合にも、
変更のイベントが発生して、上記のコードが走ります。
結果に影響はありませんが。
気分が悪いようなら、次のようにすれば回避できます。
Sub macro1()
With ActiveSheet.Shapes(Application.Caller)
Application.EnableEvents = False
.TopLeftCell.Offset(0, 0) = .OLEFormat.Object.Value
Application.EnableEvents = True
End With
End Sub
アドバイスありがとうございます。
教えて頂いたコードを入力したところ、希望していたことが100%実現できました。
マクロ初心者で、まだまだわからないことだらけですが、
機会がございましたら、是非またアドバイスをよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで指定したセルの増減ボタンを作りたい 2 2022/12/02 11:03
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) 【マクロ】ボタンを押すごとに、A1セル、A2セル、A3セルに日付を入力 3 2023/01/25 00:12
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 列の最終行に新たに入力されたらその値を自動参照 1 2023/01/21 09:59
- Excel(エクセル) EXCELでリターンキーが押されたらそのセルに特定の文字を表示したいのですが。 2 2022/08/07 12:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで数式内の文字色を一部だ...
-
対象セル内(複数)が埋まった...
-
エクセルで指定したセルのどれ...
-
エクセル 足して割る
-
エクセル “13ヶ月”を“1年1ヶ月...
-
Excelでのコメント表示位置
-
excelのCOUNTIF関数で、『範囲=...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
貼り付けで複数セルに貼り付けたい
-
【エクセル】IF関数 Aまたは...
-
EXCEL VBA セルに既に入...
-
エクセルのセルの枠を超えて文...
-
複数のセルのいずれかに数字が...
-
枠に収まらない文字を非表示に...
-
セルの高さ(行高)を求めるには?
-
セルをクリック⇒そのセルに入力...
-
Excel2003 の『コメント』の編...
-
EXCELのセルの中の半角カンマの...
-
Excelで教えてください。 バー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
セルをクリック⇒そのセルに入力...
-
Excelで数式内の文字色を一部だ...
-
エクセル 足して割る
-
対象セル内(複数)が埋まった...
-
貼り付けで複数セルに貼り付けたい
-
Excelでのコメント表示位置
-
エクセルのセルの枠を超えて文...
-
エクセル オートフィルタで絞...
-
エクセルの一つのセルに複数の...
-
EXCEL VBA セルに既に入...
-
【Excel】 セルの色での判断は...
-
(Excel)数字記入セルの数値の後...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
excelのCOUNTIF関数で、『範囲=...
-
Excel2003 の『コメント』の編...
-
枠に収まらない文字を非表示に...
-
Excelで住所を2つ(町名迄と番...
-
複数のセルのいずれかに数字が...
おすすめ情報