A1に入力されるのを監視して、入力された数字を加工してB1に自動的に転記するマクロを書きたいのですが、どのようにすればよいでしょうか?
他の質問(http://oshiete.goo.ne.jp/qa/3163895.html)から、こんな感じかなと思うのですが、【B1に下一桁を切り落として、転記】の部分をどう書いていいのか分かりません。
例えば、A1に「12345」と入力された場合、B1は「1234」を入力したいのです。
よろしくご指導ください。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if Range("A1") <>"" then
【B1に下一桁を切り落として、転記】
End Sub
No.4
- 回答日時:
「Worksheet_SelectionChange」とすると、入力と同時にカーソルを動かさない限り、記入が実行されません。
例えば Ctrl+Enter で A1 セルに入力すると、失敗します。なので「Worksheet_Change」が望ましいかと思います。「7.89」→「7.8」、「-7.89」→「-7.8」というふうに丸めるコード書いてみました。2 桁以上の整数の場合は、1 の位を削ります。1 桁の整数や文字列を入力したときは、B1 を空白にします。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n As Integer, x1 As Double, x2 As Double
On Error Resume Next
With Range("b1")
If Target.Address = "$A$1" Then
.ClearContents
With Target
n = Len(.Value) - InStr(.Value, ".")
x1 = Int(Abs(.Value) * 10 ^ (n - 1)) / 10 ^ (n - 1)
x2 = Sgn(.Value) * x1
End With
If Int(Target.Value) < Target.Value Then
.Value = x2
Else
.Value = Target.Value \ 10
End If
If .Value = 0 Then
.ClearContents
End If
End If
End With
End Sub
No.3
- 回答日時:
変更が必ず1セルごとなら問題ないのですが、例えばコピペなどで複数のセルが書き換わった場合、普通にIfで比較しても反応しませんので、もうちょっと工夫しないといけません。
'A1セル1個だけ処理出来ればいい場合
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Targetに入っている「変更のあった範囲」にA1が含まれているか調べる
If (Not (Intersect(Target, Range("A1")) Is Nothing)) Then
Range("B1").Value = Range("A1").Value \ 10
End If
End Sub
'セル複数に対して処理が必要な場合
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Targetから「変更のあったセル」を1個ずつ取り出す
For Each c In Target
If c.Cells = Range("A1") Then
Range("B1").Value = c.Value \ 10
Else If c.Cells = Range("A2") Then
'サンプル
Range("B2").Value = c.Value * 10
End If
Next
End Sub
後者の場合、If文の代わりにSelect Caseなどで比較しても構いません。
というか、数が多くなるならそうするべきでしょう。
あと、演算子「\」は「整数割り算の商を計算する」演算子です。
エラー処理は書いていないので、適宜足してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Excel(エクセル) Excelのマクロについて 2 2022/06/14 03:38
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Excel(エクセル) Excel 数式を教えてください 2 2022/06/02 12:24
- Excel(エクセル) 【マクロ】ボタンを押すごとに、A1セル、A2セル、A3セルに日付を入力 3 2023/01/25 00:12
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
はがきについて。
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
【関数】先頭だけにある、半角...
-
Excel ピボットテーブルで日付...
-
Excelのpivotについて質問です
-
時間によってファイル名が変わ...
-
エクセル 白黒印刷で白線を印刷...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
WPS OFFICEでの縦書きについて
-
Excelのチェックボックスの使い...
-
エクセルの条件付き書式につい...
-
エクセルのセルに同じ大きさの...
-
エクセルの関数について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報