- 締切済み
VBA 簡単な疑問
Excel用に、VBAを書いています。初心者です。 素朴な疑問があります。 1.セルを指定する際に、Range()とCells()がありますが、 Range("D5") or Cells(5, 4) Rangeのカッコ内に指定する範囲(D5,A1など)に相当するCellsのカッコ内に指定する値(5,4 1,1など)を簡単に知る方法はないでしょうか? たとえば、Range("CT")をCellsで書く場合に、何行目(これは左の数値を見れば分かりますが)の何列目かを計算するのはできますが、ミスの原因になりそうです。 2. 単一セルについて、セルの選択とアクティブにするのは何か違いがあるのでしょうか? 複数のセルを選択であれば、その複数の中でどれをアクティブにするか意味がありそうですが、単一の場合は全く同じと考えて良いのでしょうか? お手数ですが、よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
No.6です。 No.1さんの回答と被ってしまってました。 私の回答は無視してください。 大変失礼いたしました。
Q1. Cells(Range("D5").Row, Range("D5").Column) Q2. 単一セルに対しては、あんまり意味が無いのかなと。 もっともActiveにすることで使用できるメソッドが異なるかもしれませんが。
- Nouble
- ベストアンサー率18% (330/1783)
=ROW()*1000+COLUMN() と、簡単に セルに入れれば 解る と、思います。
- marbin
- ベストアンサー率27% (636/2290)
何度もすみません。 OnKeyメソッドでマクロにショートカットキーを割り付けて、特定のマクロ をキーを押すことによって呼び出すことができます。 A1形式とR1C1形式を切り替えるマクロにショートカットキーを割り付けておくと 便利です。 ↓は特定のブックが起動している間、ショートカットキーが有効になります。 「Ctrl」+「y」キーでkirikaeを呼び出しています。 全てのブックに対応させるにはアドイン化しておくと便利です。 アドイン化の説明は省略させていただきます。ネット上にアドイン化の方法 は紹介されていると思います。 'ThisWorkbookモジュール Option Explicit Private Sub Workbook_Open() Application.OnKey "^y", "kirikae" End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.OnKey "^y" End Sub '標準モジュール Option Explicit Sub kirikae() With Application If .ReferenceStyle = xlA1 Then .ReferenceStyle = xlR1C1 ElseIf .ReferenceStyle = xlR1C1 Then .ReferenceStyle = xlA1 End If End With End Sub
- marbin
- ベストアンサー率27% (636/2290)
↓にセル番地の表示形式を簡単に切り替える方法が紹介されています。 http://ateitexe.com/excel-change-reference-style/ 「R1C1参照形式を使用する」のチェックをON/OFFすることで切り替えできますが、 これをリボンなどに登録する方法がありそうなのですが、見つかりません。 紹介しましたHPのリンク先にそれを可能にするほうほうが紹介されています。 ※私の方ではまだこの方法は試してません。
- misatoanna
- ベストアンサー率58% (528/896)
列記号の番号を知りたいとき―― 使用していないセルで計算させます。 A1に CT と入力して、適当なセルに =COLUMN(INDIRECT(A1&1)) VBE画面上の場合は、イミディエイトウィンドウに Debug.Print Range("CT1").Column と記述して[Enter]
お礼
ご回答ありがとうございます。 そのような方法もあるんですね。
- marbin
- ベストアンサー率27% (636/2290)
1. エクセルの機能で用意されているのかもしれませんが、自作するとこんな感じになります。 ↓ワークシートモジュールに記述し、セル選択でアクティブセルの行、列を行番号/列番号 で表示します。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.StatusBar = ActiveCell.Row & "/" & ActiveCell.Column End Sub 2. 単一セルですと、アクティブにするのと選択するのとでは同じことになります。 詳しいわけではないので専門家から違うよ、という意見が出るかもしれませんが。
お礼
ご回答ありがとうございます。 VBAでそのようなテクニックがあるんですね。知らなかったです。 ありがとうございます
お礼
ご回答ありがとうございます。 考える人は考えるんですね。すごい頭脳です。