Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10004 / 13646 ツリー ←次へ | 前へ→

【24145】文字の色 cross 05/4/13(水) 13:06 質問[未読]
【24146】Re:文字の色 Kein 05/4/13(水) 13:27 回答[未読]
【24204】Re:文字の色 cross 05/4/15(金) 14:15 お礼[未読]
【24325】Re:文字の色 追伸 cross 05/4/19(火) 14:56 質問[未読]
【24326】Re:文字の色 追伸 sa 05/4/19(火) 15:16 発言[未読]
【24328】Re:文字の色 追伸 cross 05/4/19(火) 16:15 質問[未読]
【24329】Re:文字の色 追伸 sa 05/4/19(火) 16:23 発言[未読]
【24337】Re:文字の色 追伸 cross 05/4/19(火) 18:05 発言[未読]
【24346】Re:文字の色 追伸 Kein 05/4/19(火) 22:19 回答[未読]

【24145】文字の色
質問  cross  - 05/4/13(水) 13:06 -

引用なし
パスワード
   こんにちわ。

早速ですが御教授御願いします。

シート1をシート2にコピーして、コピー先のシート全体の文字の色を黒くし
変更した個所のみ解る様に色を赤くしたいのですが、どうしたらよいでしょうか?
色々な本を見ましたが解りませんでした・・・

宜しく御願いします。

【24146】Re:文字の色
回答  Kein  - 05/4/13(水) 13:27 -

引用なし
パスワード
   まずSheet2のシートモジュールに

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
   If IsEmpty(.Value) Then Exit Sub
   If .Count > 1 Then Exit Sub
   .Font.ColorIndex = 3
  End With
End Sub

というイベントマクロを入れておきます。そして標準モジュールに

Sub Pst_Val()
  With Sheets("Sheet2")
   .Cells.Clear
   Sheets("Sheet1").Cells.Copy
   .Range("A1").PasteSpecial xlPasteValues
  End With
  Application.CutCopyMode = False
End Sub

を入れて、実行してみて下さい。

【24204】Re:文字の色
お礼  cross  - 05/4/15(金) 14:15 -

引用なし
パスワード
   ▼Kein さん:
お礼遅くなり申しわけ有りません。
無事に出来ました。
また宜しく御願いします。

【24325】Re:文字の色 追伸
質問  cross  - 05/4/19(火) 14:56 -

引用なし
パスワード
   前回お世話になったものです。

早速ですが、前回のものを更にバージョンアップをしたいと
思い挑戦してみたのですが、どうも上手く出来なくて御教授
頂きたく投稿します。

前回はシート1をコピーしシート2に貼り付け、シート2の変更箇所の色を赤くする
と言うことでしたが、今回の改善としまして

コマンドボタンを押す
シートの枚数をカウントする
新しいシートを最後尾に追加する。
最後から2番目のシート(ボタンを押す前に最後尾だったシート)をコピーし
最後のシート(追加されたシート)に貼り付け
追加したシートの変更したセルの文字の色を固定(赤)する。

と言う内容でどなたか御教授ください。
御願します。

【24326】Re:文字の色 追伸
発言  sa  - 05/4/19(火) 15:16 -

引用なし
パスワード
   ▼cross さん:
>前回お世話になったものです。
まず前回のシートモジュールを全てのシートへ

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
   If IsEmpty(.Value) Then Exit Sub
   If .Count > 1 Then Exit Sub
   .Font.ColorIndex = 3
  End With
End Sub

次に標準モジュールPst_Val()の変わりに


Sub Sheet_Copy()
  Dim last_sheet As Integer
  last_sheet = Sheets.Count
  Sheets(last_sheet).Copy After:=Sheets(last_sheet)
End Sub

を入れて、実行してみて下さい。

【24328】Re:文字の色 追伸
質問  cross  - 05/4/19(火) 16:15 -

引用なし
パスワード
   ▼sa さん:

有難う御座います。
私の説明不足だったのかも知れませんが
コマンドボタンを押したら「新しいシート」を
シートの最後尾に追加したいのです。
(最初からシートは有りません。)
そのため、最初から全てのシートにモジュールを
入れると言うことは出来ないと思います。
(私の認識不足で有れば、その辺も御教授ください。)
新しく追加したシートでマクロを動かすにはどうしたらよいですか?
宜しく御願します。

>▼cross さん:
>>前回お世話になったものです。
>まず前回のシートモジュールを全てのシートへ
>
>Private Sub Worksheet_Change(ByVal Target As Range)
>  With Target
>   If IsEmpty(.Value) Then Exit Sub
>   If .Count > 1 Then Exit Sub
>   .Font.ColorIndex = 3
>  End With
>End Sub
>
>次に標準モジュールPst_Val()の変わりに
>
>
>Sub Sheet_Copy()
>  Dim last_sheet As Integer
>  last_sheet = Sheets.Count
>  Sheets(last_sheet).Copy After:=Sheets(last_sheet)
>End Sub
>
>を入れて、実行してみて下さい。

【24329】Re:文字の色 追伸
発言  sa  - 05/4/19(火) 16:23 -

引用なし
パスワード
   ▼cross さん:
シートが全くないということですか

【24337】Re:文字の色 追伸
発言  cross  - 05/4/19(火) 18:05 -

引用なし
パスワード
   最初にシートは2枚有ります。

1枚は何もマクロは組んでいません。

もう1枚にコマンドボタンが2つ有り
1つのボタンは新規作成ボタンとなっていて
こちらを押すとシート(初版)を追加し基本情報を
入力するようになっています。

もう一つのボタン(改版)を押すと2版のシートを新規で追加し
初版の内容を写します。2版がある場合は3版のシートを
新規で追加します。

最新版(一番最後に追加されたシート)で変更した個所のみ
解るように色を変えたいのです。

説明が下手ですみません。
宜しく御願します。

【24346】Re:文字の色 追伸
回答  Kein  - 05/4/19(火) 22:19 -

引用なし
パスワード
   それならシートモジュールを使うのでなく、ブックレベルのイベントにしないと無理
でしょうね。ThisWorkbookに以下のマクロを入れます。

Private Sub Workbook_SheetChange(ByVal Sh As Object, _
ByVal Target As Range)
  If Sh.Index = Worksheets.Count And _
  InStr(1, Sh.Name, "(") > 0 Then
   If Not IsEmpty(Target.Value) And Target.Count = 1 Then
    Target.Interior.ColorIndex = 3
   End If
  End If
End Sub

コマンドボタンに登録するマクロは

Private Sub CommandButton1_Click()
  With Worksheets
   .Item(.Count).Copy After:=.Item(.Count)
  End With
End Sub

10004 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free