No.8ベストアンサー
- 回答日時:
happypointさんのプログラムをベースにして作り変えて見ました。
行の追加と削除についてちょっと気になったんですが
A1の値が
5未満の時(つまり4以下の時)なにもせず
5以上10未満の時(つまり5,6,7,8,9のとき)一行追加でいいんでしょうか?
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim varValue As Variant
Dim myRow As Long
Dim myCol As Long
Dim befRow As Long
Dim i As Integer
Const kaigyouNum = 5
'セルA1の値の取得
If Target.Address <> "$A$1" Then Exit Sub 'A1以外のイベントは無視
varValue = Range("A1").Value
'数値変換
If IsNumeric(varValue) = False Then Exit Sub '数値以外の時は処理を抜ける
varValue = Int(CLng(varValue)) '強制的に整数に変換しています。
'行数の取得
myRow = Int(varValue / kaigyouNum) '5行未満は「0」。5行以上で「1」。10行以上で「2」。
myCol = varValue - myRow * kaigyouNum '5で割った端数
'現在の挿入行数を調査
befRow = 0
Do While cells(befRow + 1, kaigyouNum + 1).Borders(xlDiagonalDown).LineStyle = xlContinuous
befRow = befRow + 1
Loop
If befRow > 0 Then
Call GyouSakujyo(befRow)
End If
'罫線クリア
Range("B:F").Borders(xlDiagonalDown).LineStyle = xlLineStyleNone
'罫線を引く(5個セット)
If myRow > 0 Then
Call GyouTsuika(myRow)
Range(cells(1, 2), cells(myRow, kaigyouNum + 1)).Borders(xlDiagonalDown).LineStyle = xlContinuous
End If
'罫線を引く(端数)
If myCol > 0 Then
Range(cells(myRow + 1, 2), cells(myRow + 1, myCol + 1)).Borders(xlDiagonalDown).LineStyle = xlContinuous
End If
End Sub
'新しい行を追加する
Private Sub GyouTsuika(sounyugyou)
Rows(2 & ":" & sounyugyou + 1).Select
Selection.Insert Shift:=xlDown
End Sub
'行を削除する
Private Sub GyouSakujyo(sakujogyou)
Rows(2 & ":" & sakujogyou + 1).Select
Selection.Delete Shift:=xlUp
End Sub
No.6
- 回答日時:
お待たせしました。
セル「A1」の値に連動して、列B~Fまでに罫線を引く処理を行うサンプルです。
次のコードを、VBEのシートモジュール(処理を行いたいシートのシートモジュール)に貼り付けてみてください。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim varValue As Variant
Dim myRow As Long
Dim myCol As Long
Dim i As Integer
'セルA1の値の取得
If Target.Address <> "$A$1" Then Exit Sub 'A1以外のイベントは無視
varValue = Range("A1").Value
'数値変換
If IsNumeric(varValue) = False Then Exit Sub '数値以外の時は処理を抜ける
varValue = Int(CLng(varValue)) '強制的に整数に変換しています。
'行数の取得
myRow = Int(varValue / 5) '5行未満は「0」。5行以上で「1」。10行以上で「2」。
myCol = varValue - myRow * 5 '5で割った端数
'罫線クリア
Range("B:F").Borders(xlDiagonalDown).LineStyle = xlLineStyleNone
'罫線を引く(5個セット)
If myRow > 0 Then
Range(Cells(1, 2), Cells(myRow, 6)).Borders(xlDiagonalDown).LineStyle = xlContinuous
End If
'罫線を引く(端数)
If myCol > 0 Then
Range(Cells(myRow + 1, 2), Cells(myRow + 1, myCol + 1)).Borders(xlDiagonalDown).LineStyle = xlContinuous
End If
End Sub
この回答への補足
おぉ~
こんな感じです!!
こんなわけの分からん質問に真剣に回答していた出して本当に感謝です。(途中から連想ゲームになった?)
しかも
わざわざコメントまで・・・
ありがとうございます!
あと・・・
こんな感じのセルがA1~A10まである場合1番目の数字が5以上のとき2番目以降のセルに斜線がはいってしまいます。出来れば、2番目の数字を3番目以降に移動させたいのですが・・・(行の挿入をして斜線を引く感じで挿入した行数を覚えておいて数字を変更したときに余計な行は削除する?)
説明が下手くそで申し訳ないのですが・・・
No.5
- 回答日時:
はあああ・・・なんとなく見えてきました。
なるほどねっ。
要するに、入力した数値の数だけ、斜線を引いたセルを作りたいと、そういうことですかね?
で、各行につき、5個までセルを横に並べて、
6個以上になったときは次の行に送るようにしたいと。
そして、入力した値に応じて、リアルタイムに変化させたい、ということですね。
もう一つ質問していいですか?
何で斜線をひく必要があるんですか?
何かの目印?
それとも紙に出力したりして、別の用途があるんですか?
No.4
- 回答日時:
>数字のみを入力するセル(A1)があります。
このセルの値が
第1行はA1の値で
第2行はA2の値で
第3行はA3の値で
斜線を引くと言う風に「解釈しました。」
>1の時は右のセル(B1)に斜線をひく
2の時は右二つ(B1,C1)に斜線を引く
…
この部分は下記で良いですか。
Sub test01()
d = Range("a1").CurrentRegion.Rows.Count
' MsgBox d
For i = 1 To d
n = Cells(i, "A")
If n < 5 Then
For j = 2 To n + 1
Cells(i, j).Borders(xlDiagonalUp) _
.LineStyle = xlContinuous
Next j
End If
Next i
End Sub
>5以上の時は行の挿入(AとBの間に)
AがA列を表すなら、意味不明。質問の表現は正確に。
>5以上の数字から5以下の数字に変更の時は挿入した行を削除と言う処理をやりたい・・・
これだとイベントプロセジュアを使わないと出来ないと思いますが、そこまで考えているのですか。
全体にあまり出くわすことのない特殊なニーズのような気がしますが。
もうすこし総合的なやりたい目的・趣旨でも書いていただければ、ハハンとくるものがあるでしょうが。
No.3
- 回答日時:
こんにちは。
変わった条件の処理ですね。
何のための処理なんでしょうか???
ゲームかなにかを作っているとか?!
教えていただけると興味深いです。
ちなみに3とか4が入力されたときは何もしないでいいんでしょうか?
この回答への補足
作ってるものはとちっちゃいお店の業務管理するものです。(ボランティアで作ることに…)(>_<;)
3以上の時も1・2と同様の動きをします。(ただし5以上の時は下に行く)
20の時は↓こんな感じ
/////
/////
/////
/////
ついでに説明すると("~"は日付とかのデータ群、□は空)
5の時
~~~~~/////
12の時
~~~~~/////
□□□□□/////
□□□□□//
ってしたい。
No.2
- 回答日時:
やりたいことがよくわからないので、なんだか不思議なものになってしまいました(^-^;
が、一応、以下のコードで、A1が変われば動作するようになっています。
答えよりもヒントを出したほうが後々のためにはいいと思うんですが
どうも説明が下手なもので。。。
でも、簡素な作りにしたつもりなので、わかっていただけると・・・いいなぁ。
Private Sub Worksheet_Change(ByVal Target As Range)
Static intA1 As Integer
If Target.Address <> "$A$1" Then Exit Sub
If intA1 >= 5 And Cells(1, 1) < 5 Then Columns(2).Delete Shift:=xlToLeft
intA1 = Cells(1, 1)
Select Case intA1
Case 1
Cells(1, 2).Borders(xlDiagonalDown).LineStyle = xlContinuous
Case 2
Cells(1, 2).Borders(xlDiagonalDown).LineStyle = xlContinuous
Cells(1, 3).Borders(xlDiagonalDown).LineStyle = xlContinuous
Case Is >= 5
Columns(2).Insert Shift:=xlToRight
End Select
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) Excelで数式をそのままコピーしたい どうすればいいですか? 4 2022/09/16 02:16
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報