質問No.236012で素晴らしい回答頂きましたが、締め切ってしまいましたので追加質問をさして頂きます。
nishi6さんの回答No3で
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Const BoldCol = "A"    '太字にする列
  Const maxRow = 4      '太字にするセルの最後の行(開始は1行目から)
の部分で太字にする開始は1行目からになっていますが、例えば2行目から4行目までという風に、開始の行と最後の行を指定する場合はどのようにすればよいでしょうか。

A 回答 (1件)

開始行を指定するようにしてみました。



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Const BoldCol = "A" '太字にする列
  Const startRow = 2 '太字にするセルの最初の行
  Const maxRow = 4 '太字にするセルの最後の行

  '単一セルの操作の場合
  If Target.Count = 1 Then
    'A列の太字属性を解除
    Range(BoldCol & startRow & ":" & BoldCol & maxRow).Font.Bold = False
    If startRow <= Target.Row And Target.Row <= maxRow Then
      '特定行間内にあればA列を太字属性にする
      Range(BoldCol & Target.Row).Font.Bold = True
    End If
  End If
End Sub
    • good
    • 0
この回答へのお礼

ご指導ありがとうございます。
全く望んでいた通りの回答です。
充分に利用さしていただきます。

お礼日時:2002/03/19 06:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QExcelの列'A' 'B' 'C'...や、行'1' '2' '3'...の文字の大きさや種類

Excel2002を使っていますが、Excelの上にある列'A' 'B' 'C'...や、左にある行'1' '2' '3'...の文字の大きさや種類は変えることはできるのでしょうか?もし、変えれるのでしたらどうやって変えるのですか?

Aベストアンサー

「書式」「スタイル」「標準」の状態で「変更」を押して「フォント」の内容を変更してください。
列と行の文字フォントとサイズが変更されます。

QエクセルのPrivate Sub Worksheet_Change

エクセルのPrivate Sub Worksheet_Change

すいません。どうやっても動作しません。
シート1のB5のセルに英数字を入力しエンターを押して確定すると
シート2のC列から同レコードを検出し、その検出された行のB~E列の値を
シート1のH4、H5、H6、J7に値をかえします。
またB5の値はH8にも表示されます。
データがあった場合には、シート1のH4、H5、H6、J7に値が表示されています。
シート2にデータが無い場合はシート1のH4、H5、H6、J7には「#N/A」と表示されます。
ここまでは関数と計算式なのでマクロではありません。

ここでフォームで作成した「印刷ボタン」をクリックします。
すると「印刷ボタン」に登録したマクロが起動します。
シート1のセルG4~J11までが印刷されます。

マクロの内容は

シート1のH4に「#N/A」が表示されている場合はメッセージボックスで
「データがありません」と出ます。印刷は実行されません。

H4が「#N/A」以外の場合は印刷が実行されますがその前に
シート3のセルA1の数値をプラス1してシート3のB2に、セルA1の値の先頭にAを付けて
表示します。(セルA1が0002ならB1はA0002)
それがシート1のH12に表示されます。(H12への表示は計算式で対応)
印刷ボタンを押すごとにシート3のセルA1は1づつ繰り上がります。
シート1のH12の値が変わってから印刷がされます。
と同時に
シート1のセルB5がDELETEされセルB5がアクティブになります。
結果シート1のH4、H5、H6、J7、H8は「#N/A」が表示されます。
H12はクリアされません。
印刷終了後にもセルの値が変化する事になります。

もう一つフォームで作成した「初期化」というボタンがあります。
これをクリックするとマクロが起動して
シート1のセルB5がDELETEされセルB5がアクティブになります。
よってシート1のセルH4、H5、H6、J7、H8も「#N/A」に値が変わります。

ここまでは完璧に動作しています。
でこの「印刷ボタン」を押してマクロが起動ではなく
セルB5に入力しエンターを押したらマクロを起動させたいです。

Private Sub Worksheet_Change(ByVal Target As Range)
を利用しましたが動作しません。

シート1のB5のセルに入力しエンターを押すと
シート1の一部のセルの値が変化。
印刷ボタンを押すと、シート3の一部のセルの値が変化し
その後再びシート1のセルの一部が変化し印刷が開始され
その後シート1のセルB5がDELETEされアクティブに。
それに伴いシート1の一部のセルの値が変化する。
マクロが起動すると、シート1とシート3のセルの値が数回変化します。

このような場合はPrivate Sub Worksheet_Change(ByVal Target As Range)で
セルB5の入力後エンターで確定しての上記のマクロ起動は無理なのでしょうか?

エクセルのPrivate Sub Worksheet_Change

すいません。どうやっても動作しません。
シート1のB5のセルに英数字を入力しエンターを押して確定すると
シート2のC列から同レコードを検出し、その検出された行のB~E列の値を
シート1のH4、H5、H6、J7に値をかえします。
またB5の値はH8にも表示されます。
データがあった場合には、シート1のH4、H5、H6、J7に値が表示されています。
シート2にデータが無い場合はシート1のH4、H5、H6、J7には「#N/A」と表示されます。
こ...続きを読む

Aベストアンサー

application.EnableEvents = False
処理
application.EnableEvents = True
ちゃんと上記の様にしていますか?

EnableEvents入れてなかったらシート1の値変えた時点で
再度Changeイベントが頭から始まりますよ。
処理中にエラーになるとEnableEventsがFalseのままになり
イベントが発生しなくなるのでOn error gotoとか書いた方がいいですよ。
あとデバッグは覚えた方が良いと思います。

QPrivate Sub Worksheet_Calculate()のことでお聞きします

いつもgooの皆さんに大変お世話になっております
マクロの勉強を初めて2ヶ月の者です

Private Sub Worksheet_Change(ByVal Target As Range)にマクロを書いているのですが
「特定のセル範囲が変更されたときに処理を実行する」は分かるのですが
特定のセル範囲が変更されなくても、例えば、セルの値がインストールされているアドインで
変化した時の処理はどこに書いたらいいのでしょうか?

今現在、H列のTarget.RowとJ列のTarget.Rowにはアドインで、機器の温度が表示されていますが
この2点の温度変化で
Application.Speech.Speak "温度接近", True
などどやりたいのですが、Private Sub Worksheet_Calculate()に書けばいいのでしょうか
その場合、Private Sub Worksheet_Change(ByVal Target As Range)内の
Target.Row等の値はどうやったらPrivate Sub Worksheet_Calculate()で使えますか?
それとも、もしかしたら標準モジュールに書くのでしょうか?

うまく説明できていませんが、どなたか教えてください

いつもgooの皆さんに大変お世話になっております
マクロの勉強を初めて2ヶ月の者です

Private Sub Worksheet_Change(ByVal Target As Range)にマクロを書いているのですが
「特定のセル範囲が変更されたときに処理を実行する」は分かるのですが
特定のセル範囲が変更されなくても、例えば、セルの値がインストールされているアドインで
変化した時の処理はどこに書いたらいいのでしょうか?

今現在、H列のTarget.RowとJ列のTarget.Rowにはアドインで、機器の温度が表示されていますが
この2点の...続きを読む

Aベストアンサー

こんばんは。

今回の質問は、ご質問者さんには、別のイベントというか、紹介しましたね。その中に含まれていたかもしれません。

今回の件は、マクロを勉強して2ヶ月の人の話ではなく、3年やっても、5年やっても知らない人は知らないことで、かなりハイレベルというか、古めかしいというか、ほとんど知られていない技術だと思います。こういう話は、1冊の本にもなっています。本来、計測メーカー側の専門業者に頼んでしまったほうが早い気もします。たぶん、彼らは、公表はしていませんが、それ専用のVBA用のマクロを持っているはずです。

>特定のセル範囲が変更されなくても、例えば、セルの値がインストールされているアドインで
>変化した時の処理はどこに書いたらいいのでしょうか?

ふつうは、どこでもよいので、
=Now()
という式を書いて、
Private Sub Worksheet_Calculate()
に、イベントを拾わせるわけです。
しかし、少し、工夫が必要で、時々、これが困った動きをします。

Calculate のイベントが、ワークブック全体に働いてしまい、どこのシートを使っても、Calculateイベントが動いてしまいます。この方針で話が本格的になった時に、この対処法は、あらためて紹介します。

>(Worksheet_Change)のTarget.Row等の値はどうやったらPrivate Sub Worksheet_Calculate()で使えますか?

単に、モジュール変数を使って橋渡しするのか、それとも、同時で働くということなら、 Worksheet_Calculateのイベントでなくてもよいはずです。どのように使うのか、こちらではわかりかねます。本来、別の働きをするものです。もちろん、キーで入力した際は、Worksheet_Calculateのイベントは、起動します。

>Application.Speech.Speak "温度接近", True
>などどやりたいのですが、Private Sub Worksheet_Calculate()に書けばいいのでしょうか

ActiveX コントロールで入ってきた値が、どのように加わっていくのかにもよりますが、セルの位置は、Worksheet_Changeイベントのようにセルの位置は感知しませんから、インプットの場所が動いていくのでしたら、マクロで最後尾を探さなくてはなりません。

>それとも、もしかしたら標準モジュールに書くのでしょうか?
同様のコマンドで、標準モジュールに書く方法もあります。とても古い方法で、オブジェクト・ウィンドウにも出てこないはずです。しかし、まだ、同様の働きはしますが、今は、シートモジュールが主流になっています。

こんばんは。

今回の質問は、ご質問者さんには、別のイベントというか、紹介しましたね。その中に含まれていたかもしれません。

今回の件は、マクロを勉強して2ヶ月の人の話ではなく、3年やっても、5年やっても知らない人は知らないことで、かなりハイレベルというか、古めかしいというか、ほとんど知られていない技術だと思います。こういう話は、1冊の本にもなっています。本来、計測メーカー側の専門業者に頼んでしまったほうが早い気もします。たぶん、彼らは、公表はしていませんが、それ専用のVBA用の...続きを読む

Qエクセルで、〇行目、〇行目と〇行目・・・と指定していっきに削除したのですが、

30,000行ほどあるCSVをあるソフトに取り込もうとしたところ
相互性の関連で削除しなければいけない行が
別のエクセルシートで

2行目
4行目
11行目




といったかたちで400ほどでてきてしまいました。

上手く魔法のようにいっきに削除する方法はありませんでしょうか?

よろしくお願いいたします。

Aベストアンサー

あるソフトから、削除すべき行のリストがデータとして出力されているものとして回答します。そうでない場合は無視してください。

まず、削除行番号リストをSheet2のA1:A400にペーストします。
次に、Sheet1のD1(データの無い列)に以下の式を入力し、下にコピーします。
=ISERROR(MATCH(ROW(A1),Sheet2!$A$1:$A$400,FALSE))

最後にオートフィルタを用いてD列の"FALSE"を抽出し、該当行を削除してください。

Qexcel2010 行ごとにデータがある最後のセルの1行目の値を取得したい

歯抜けのデータがあります。1行ごとに最後の値が入っている列の1行目の値を取得しZの列(最終)にセットしたいのですが、できればvbaではなく関数でできないものでしょうか。
毎回列数も行数も若干フォーマットも違うのでセルにいれる関数のほうがありがたいです。
   A B C D ・・・ Z
1  あ い う え   最終 
2  10 5 7 9    え
3  8   2      う  
4    6        い
5  3          あ

Aベストアンサー

No.10の式の一部の再度の修正
私がNo.9で提示した式
 =IF(COUNTA($M2:$FU2),INDEX($M$1:$FU$1,MAX(INDEX(($M2:$FU2<>"")*(COLUMN($M2:$FU2)-COLUMN($L1)),0))),"")

COUNTAの範囲がA列からになっていました。
添付画像の数式バーのものも同じ間違いのままでした。
検証するときに修正するのを忘れていました。


このカテゴリの人気Q&Aランキング

おすすめ情報