
st = Left(.Address(0, 0), 1)この部分をおしえてくれませんでしょうか
Private Sub Worksheet_Change(ByVal Target As Range)
Dim st As String
With Target
st = Left(.Address(0, 0), 1)
Select Case st
Case "E"
If .Row Mod 2 = 0 And IsDate(.Value) Then
Cells(.Row, 5).Font.ColorIndex = 5
Else
Cells(.Row, 5).Font.ColorIndex = xlAutomatic
End If
If .Row Mod 2 = 1 And IsDate(.Value) Then
Cells(.Row, 5).Font.ColorIndex = 3
Cells(.Row - 1, 5).Font.ColorIndex = 3
Cells(.Row, 5).Interior.ColorIndex = 6
Cells(.Row - 1, 5).Interior.ColorIndex = 6
Cells(.Row, 3).Interior.ColorIndex = 6
Cells(.Row - 1, 3).Interior.ColorIndex = 6
Else
Cells(.Row, 5).Font.ColorIndex = xlAutomatic '何故かxlNoneではダメだった。古いからかも。
Cells(.Row - 1, 5).Font.ColorIndex = 5
Cells(.Row, 5).Interior.ColorIndex = xlColorIndexNone
Cells(.Row - 1, 5).Interior.ColorIndex = xlColorIndexNone
Cells(.Row, 3).Interior.ColorIndex = xlColorIndexNone
Cells(.Row - 1, 3).Interior.ColorIndex = xlColorIndexNone
End If
No.2ベストアンサー
- 回答日時:
No.1です。
>AAで試したら・・・
とりあえず最終列まででも対応できる方法です。
>Dim cnt As Long
と変数をもう一つ追加し
st = .Address(False, False)
cnt = 1
Do While Mid(st, cnt, 1) Like "[A-Z]"
cnt = cnt + 1
Loop
st = Left(st, cnt - 1)
のようにしてみてはどうでしょうか?
※ もっと簡単な方法があればごめんなさい。m(_ _)m
No.3
- 回答日時:
※この回答は、“締め切られた質問への回答追加”として、2019/09/18 12:16に回答者の方よりご依頼をいただき、教えて!gooによって代理投稿されたものです。
---
先の質問では列数がそこまでいくとは想像してませんでした。
既に回答は出ておりますが自分の作成したコードなので一応修正をしたいかなと。
st = Left(.Address(0, 0), IIf(.Address(0, 0) Like "[A-Z][A-Z]*", 2, 1))
となります。
AddressにTrue.Flaseを用いる方もいらっしゃいますが、15年程前に参考にさせて頂いてた諸先輩回答者様が1,0を用いていたので私もそのまま使ってました。
どちらにされるかは質問者さんの方にお任せです。
意味的にはセルアドレスが英字2文字で始まるなら左から2文字を、そうでなければ1文字を抜き出すようにしてます。(Iifで)
No.1
- 回答日時:
こんばんは!
>st = Left(.Address(0, 0), 1)
の部分について・・・
>With Target
が最初にあるので結局
>st = Left(Target.Address(0, 0), 1)
というコトになりますね。ここまでは問題ないと思います。
次に
>.Address(0, 0)
の部分は
>.Address(False, False)
なので「Target」のセル番地の「$」マークを除いた文字列になります。
>.Address(1, 1) または .Address(True, True) とすれば
「$」マーク付きのセル番地になります。
仮に「Target」がE10セルであれば
① >.Address(0, 0)
で「E10」
② >.Address(1, 1)
とすれば
「$E$10」
という文字列が変数「st」になります。
今回のコードは①なので
その一番左の1文字というコトで「E」が求められます。
※ 当然ですが上記コードだとZ列までの限定ですよね?
余計なお世話かもしれませんが、
>.Address(True, False) → E$10
>.Address(False, True) → $E10
が求められます。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba textboxへの入力について教...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
【ExcelVBA】値を変更しながら...
-
複数のExcelファイルをマージす...
-
【ExcelVBA】値を変更しながら...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
Excelマクロで使うVBAコードを...
-
VBA Application.Matchについて...
-
VBA ユーザーフォーム ボタンク...
-
【マクロ】シートの変数へ入れ...
-
Excelのマクロについて教えてく...
-
Excel マクロについて詳しい方...
-
WindowsのOutlook を VBA から...
-
Excel 範囲指定スクショについ...
-
VBA レジストリの値の読み方に...
-
Vba Array関数について教えてく...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
vb.net(vs2022)のtextboxのデザ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba Array関数について教えてく...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】シートの変数へ入れ...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
【マクロ】並び替えの範囲が、...
-
Vba セルの4辺について罫線が有...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
VBAでユーザーフォームを指定回...
-
【マクロ】開いているブックの...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
算術演算子「¥」の意味について
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
-
ワードの図形にマクロを登録で...
-
VBAの「To」という語句について
-
【マクロ】変数を使った、文字...
おすすめ情報
※ 当然ですが上記コードだとZ列までの限定ですよね?
ここで考えてしまいました。AAで試したら
当然ながら動作いたしませんでした。
どうしたらいいのですか。