マクロ作成でセルに色を3色順次に変わるようにしたいのですが、
セル色の変更時間が早く、最後の色のみの表示になります。
コマンドボタンをクリックすると、アクティブセル(B3からF3)までのセル色が黄色・薄青・赤に5秒間隔で変色し、その後、下のセルに移動します。
再度、コマンドボタンをクリックすると、先ほどの上のセルの色が消え、アクティブセルに黄色・薄青・赤に5秒間隔で変更するVBAをお教えください。マクロで作成したVBを表示しておきます。
{timer}を使用するみたいですが、理解出来ませんので、宜しくお願いします。
罫線も引いてあります。
ActiveCell.Range("A1:E1").Select
With Selection.Interior
Timer = 4
.ColorIndex = 35
.Pattern = xlSolid
End With
Selection.Interior.ColorIndex = xlNone
With Selection.Interior
.ColorIndex = 7
.Pattern = xlSolid
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
ActiveCell.Offset(1, 0).Range("A1:E1").Select
End Sub
No.3ベストアンサー
- 回答日時:
こんなのエクセルVBAの使い方(エクセルの使い方)としては懲りすぎだ。
エクセルの操作や設定では出来ないことでしょう。そこまで高度に、珍奇にやりたいなら、本来は自分で勉強して、他人の回答に頼らず、やべき範囲の課題と思う。ーー
質問の意味が1部良くわからない。例えばB-Fの5列を問題にしていてなぜ3色とか。勝手に当方で解釈した下記やってみた。
そういうことから質問者のニーズと外れている恐れもある。
参考になるところがあれば使って。自分の浅才のため、PUBLIC変数を使うところなど気に食わないが。
(1)Sheet1に(Formを介さず)コマンドボタン(コントロールツールボックスの方)を1つ貼り付ける。
(2)コマンドボタンのクリックイベントに下記を貼り付ける。
時刻の制御用。
Private Sub CommandButton1_Click()
t = 0
r = ActiveCell.Row
Range(Cells(r - 1, "B"), Cells(r - 1, "F")).Interior.ColorIndex = xlNone
指定時刻 = Now()
For i = 1 To 5
指定時刻 = 指定時刻 + TimeValue("0時00分05秒") '5秒後
待ち時間 = TimeValue("0時00分05秒")
Application.OnTime TimeValue(指定時刻), "test01", TimeValue(待ち時間)
Next i
End Sub
ーー
標準モジュールに
(3)パブリック変数
Public t
Public r
(4)実行モジュールに
定時に実行する処理内容。
Sub test01()
Dim c(10)
'5色のColorIndexの設定
c(1) = 3: c(2) = 12: c(3) = 5: c(4) = 9: c(5) = 6
t = t + 1
Cells(r, t + 1).Interior.ColorIndex = c(t)
End Sub
ーーーー
操作と結果の説明(質問もこのように書くべきではとおもう)
B5をクリック
コマンドボタンをクリック
5秒後にB5が赤、5秒後にC5オウド、5秒後に青・・とF5まで色が付く(C5を色をつけたときB5は色を消すのか質問で良くわからなかったので消してない)
B6をクリック
コマンドボタンをクリック
B5:F5の色を消す
B6から、上記B6の場合と同じことを繰り返す。
ーー
クリックの5秒後から色付けが始まるが良くないかな。
改良は出来るでしょう。
No.4
- 回答日時:
No2、onlyromです。
間違いがありです。(^^;;;
NO2の回答で
選択範囲は、1行(B2~F2とか)か、又は、1列(E1~E5とか)を想定してある
と書きましたが、
正しくは、
同じ行の範囲(B2~F2とか、E5~J5とか)のみ想定してあり
同じ列の範囲(E1~E5とか、B3~B9とか)は想定していません。
ということです。
同じ列の範囲(E1~E5とか、B3~B9とか)も想定するとコードが数行増えることになります。
所望ならアップします。
以上。
No.2
- 回答日時:
>アクティブセル(B3からF3)までのセル色が黄色・薄青・赤に5秒間隔で変色し
この意味がよく理解できません。
アクティブセルというのは、ひとつのセルのことです。
たぶん、こういうことでしょうね?
ある範囲、例えば、B3:F3 を選択した後、
コマンドボタンをクリックすると
選択範囲(B3~F3)のセルを順番に5秒間隔で塗りつぶしていく
再度、ボタンをクリックしたら、
前回塗りつぶしたセルは色なしにし、次の行を同じく塗りつぶしていく
これだけであれば、Waitメソッドが分かり易いかもしれません。
「コントロールツールボックス」の中のコマンドボタンをシートに配置
'---------------------------------------------------
Private Sub CommandButton1_Click()
Dim Rng As Range
Dim N As Integer
Dim myColor
myColor = Array(3, 6, 8) '●色番号
If Selection.Cells(1).Row > 1 Then
Selection.Offset(-1).Interior.ColorIndex = xlNone
End If
For Each Rng In Selection.Cells
Rng.Interior.ColorIndex = myColor(N)
Application.Wait Now + TimeValue("0:00:05")
N = N + 1
If N > 2 Then N = 0
Next Rng
Selection.Offset(1).Select
End Sub
'--------------------------------------------
セル範囲を選択した後、ボタンをクリックして実行すること
選択範囲は、1行(B2~F2とか)か、又は、1列(E1~E5とか)を想定してある
色は、「赤、青、水色」にしてある
以上。
No.1
- 回答日時:
ExcelVBAの場合 Timerオブジェクトは無いので
Applicationクラスの OnTimeメソッドを使います
標準モジュールを追加して タイマーで起動されるプロシージャを定義します
Public Sub myChange()
'実際に背景色を変更するシートのプロシージャを呼ぶ
Sheet1.ColorChange()
End Sub
シート側の色変更用の変数を準備します
Dim bFlag as Boolean
Dim cl as integer
DIm myDt as Date
シート側に実際に実行するプロシージャを定義します
Public Sub ColorChange()
' 塗りつぶしの設定のみしています
' セルの選択範囲もActiveCellのみです
' 適宜修正してください
ActiveCell.Interior.ColorINdex = cl
if bFlag then
myDt = Now + Timevalue("0:0:5")
end if
Select Case cl
case 3
cl = 35
case 35
cl = 7
case 7
cl = 0
case else
ActiveCell.Offset(1,0).Select
myDt = Now
End Select
if bFlag then
Application.OnTime myDt, "myChange"
End if
End Sub
コマンドボタンのClickイベントに
Private Sub CommandButton1_Click()
If bFlag = False Then
cl = 3
bFlag = True
Application.OnTime Now, "myChange"
Else
bFlag = False
Application.OnTime myDt, "myChange", , False
End If
End Sub
とします
コマンドボタンをクリックすると色変更が始まります
もう一度クリックすると停止します
この回答への補足
redfox63様。
早速のご教授有り難うございます。
VBAが不慣れの為、再度質問指して頂きます。
すべて同じ標準モジュールにコピー指して頂きました。
「コマンドボタンのClickイベン」とありますが、同じ標準モジュールでよろしいのでしょうか。記入方法をお願いします。
Public Sub myChange()
'実際に背景色を変更するシートのプロシージャを呼ぶ
Sheet1.ColorChange()ここの位置が反転します。()も必要でしょうか。
End Sub
操作しますと
コマンドボタンで下方向に移動はしますが、色がつきません。
何か間違っているのでしょうか。
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) オートフィルタで抽出結果に 罫線をひく方法 1 2022/07/13 13:08
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) 複数セルに〇印をつけるマクロ 4 2022/09/07 05:33
- Visual Basic(VBA) VBA 罫線について B列3行目から21行毎にデータがはいります。 データがはいったらデータが入った 6 2022/11/15 17:22
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルテキストボックスの文...
-
VBAで、貼り付け禁止命令を実現...
-
エクセルVBA(実行時エラー438...
-
データが入力されている隣のセ...
-
ダブルクリックすると現在の時...
-
メッセージを1度だけ表示したい。
-
VBAで丸をつけたいです。
-
エクセルのVBAでダブルクリック...
-
GrapeCityのSpreadの複数セルの...
-
EXCELマクロ 保護されているシ...
-
ハイパーリンクされているファ...
-
ExcelのVBAを使って軽い心理学...
-
マクロを使って画像を貼り付け
-
Excel VBA セルを指定個数ラン...
-
StringGridでの文字入力制限
-
【VBA】参照値を1ずつ増やして...
-
VBAで選択したセルのみ処理を実...
-
VBAについて教えてください。 E...
-
セル色を5秒間隔で変える
-
VBAのListBoxで複数選択して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データが入力されている隣のセ...
-
EXCELマクロ 保護されているシ...
-
エクセルテキストボックスの文...
-
VBAで、貼り付け禁止命令を実現...
-
ハイパーリンクされているファ...
-
VBAで丸をつけたいです。
-
メッセージを1度だけ表示したい。
-
エクセルVBA(実行時エラー438...
-
ダブルクリックすると現在の時...
-
VBA セルに合わせて移動するが...
-
(VBA)アクティブセルを起点に...
-
Jtableの特定のセルの背景色や...
-
Windowsで動くVBAがmacOSで動か...
-
エクセルVBA セル選択後にカレ...
-
Excelのセル内にある図形を削除...
-
Excel VBA ダブルクリックで入...
-
セル色を5秒間隔で変える
-
StringGridでの文字入力制限
-
【VBA】参照値を1ずつ増やして...
-
マクロでのカーソル移動
おすすめ情報