こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Excel2007で行指定して数字を記号に変換

いつもお世話になってます。

X列の1マス1マスに0~9の数字のいずれかが入ると、X列に入った0~9の値に反応して、そのX列の1マスを水平上にかつ、中心として、V列W列とY列Z列のセルに0~9の数字のいずれかが入ります。

更に、V列W列とY列Z列に入った数値を記号に変換して、その変換内容は
0が●で
1~9は×
になります。

マクロボタンを押すと
行指定ができるダイアログボックスが出て来て
行指定されたセルXに0~9の数字を0から1つずつ入れて
別sheetの、0の場合はB20にV列の値を、W列はC20、Y列はD20、Z列はE20にと変換内容に沿ってコピペしたいです。

Xに3が入るということは、別sheetの(B23:E23)に変換された記号が入ってる形であることが正解の形になります。

私の下手な質問がおおまかにご理解して頂けたと思いますので、ここから質問を綺麗にまとめます。

Asheet上にあるマクロボタンからBsheetのX列の行番号指定に始まり、その行番号指定したXセルに0~9が1つずつ入りますと、セルA20~A29に0~9と数字を付ってますので
V列はAsheetのB20から下に、W列はAsheetのC20から下に、Y列はAsheetのD20から下に、Z列はAsheetのE20から下に

マクロボタンで行指定する度に変換内容に沿って変換された記号が(B20:E20)~(B29:E29)にと一気にずらーっと入ってるのが希望なんです。

ご協力頂けたら嬉しい。

投稿日時 - 2019-07-18 23:58:53

QNo.9636825

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

質問の意味がよくわからない。
質問者にしか起こりえない必要性のようだし。
参考までに上げてみる。
==
シートはSheet1とSheet2とする。
Sheet1のX列に数字を入力するとする。
Sheet1のChangeイベントを使って
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False 'changeイベント一時停止
If Target.Column <> 24 Then Exit Sub 'X列以外ならスルー
'--数字チェック
If Not IsNumeric(Target) Then GoTo p1
'ーー1桁数字チェック
If Target > 9 Or Target < 0 Then GoTo p1
'--OKの場合
MsgBox Target '確認用
'--Sheet1の同行v,W,Y,Z列に数字をセット
Target.Offset(0, -2) = Target 'V列
Target.Offset(0, -1) = Target 'W列
Target.Offset(0, 1) = Target 'Y列
Target.Offset(0, 2) = Target 'Z列
'--
y = Target
'--数字から対応する記号に変換
x = Application.WorksheetFunction.Choose(y + 1, "●", "×", "×", "×", "×", "×", "×", "×", "×", "×")
'--Sheet2に、その記号をセット
y = InputBox("Sheet2の行指定すること")
Worksheets("Sheet2").Cells(y + 20, "A").Offset(0, 1) = x
Worksheets("Sheet2").Cells(y + 20, "A").Offset(0, 2) = x
Worksheets("Sheet2").Cells(y + 20, "A").Offset(0, 3) = x
Worksheets("Sheet2").Cells(y + 20, "A").Offset(0, 4) = x
Application.EnableEvents = True
GoTo p2
p1:
MsgBox "0-9の数字入力のこと"
Target = ""
p2:
Application.EnableEvents = True
End Sub
基本的に、処理は、シートのセルへの「値の代入」でしかないようなので、何で詰まっているのかわからない。

投稿日時 - 2019-07-19 19:54:32

あなたにオススメの質問