[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ボタンを押すと指定したセル内に赤字があれば、入力フォームが開くようにしたいです。』(しょうちゃん)
マクロ初心者です。
コマンドボタンを押すと、指定したセルに赤字があれば、入力フォームが開いて入力フォーム上に
名前(特定の複数人)とテキストを入力して、パスワード(名前別に)を入れて判定を行い、合っていれば
指定したセルに、テキストと名前が転記されるようにしたいのですが可能でしょうか?
宜しくお願いします。
< 使用 Excel:Excel2021、使用 OS:Windows10 >
(syo) 2023/03/24(金) 08:09:24
指定したセルはA2:A10といった感じです。
「入力フォーム上に
名前(特定の複数人)とテキストを入力して、パスワード(名前別に)を入れて判定を行い、合っていれば
指定したセルに、テキストと名前が転記されるようにしたいのですが」に関しては
作成でき、解決できたのですが、「コマンドボタンを押すと、指定したセルに赤字があれば、入力フォームが開いて」が
赤字があってもUserForm1が起動致しません。
下記がコードになります
Private Sub CommandButton1_Click()
Dim 赤 As Long 赤 = RGB(255, 0, 0)
Dim i As Long For i = 1 To ActiveCell.Characters.Count
If ActiveCell.Characters(i, 1).Font.Color = 赤 Then UserForm1.Show Exit For End If Next
End Sub
宜しくお願い致します。
(しょうちゃん) 2023/03/24(金) 08:47:07
提示とコードが一致していませんか意図したものですか?
(もこな2) 2023/03/24(金) 09:01:15
申し訳ありません、当初はシート全体を対象にしたのですが
赤字があっても無視したいセルがありましたので変更しました。
ActiveCell.Characters(i, 1)をどう変えたらいいでしょうか?
(しょうちゃん) 2023/03/24(金) 09:18:28
ActiveCell.Characters(i, 1)
↑がアクティブセル(に入力されている文字)のうち【i】番目の【1文字】という意味なのは理解できているんですよね?
ならば、A2:A10というセル範囲から1セルずつ取り出して、取り出したセルのCharactersを確認していけばよいということになりませんか?
そして、処理内容から鑑みて1つヒットしたらもう探さなくてよいからそこでループを抜ければよいですね。
すなわち↓のような感じで良さそうにおもいます。
Sub さんぷる() Dim MyRNG As Range, i As Long, フラグ As Boolean
Stop 'ブレークポイントの代わり
For Each MyRNG In ActiveSheet.Range("A2:A10") For i = 1 To MyRNG.Characters.Count If MyRNG.Characters(i, 1).Font.Color = vbRed Then MsgBox MyRNG.Address(0, 0) & "セルの" & i & "文字目でヒット" フラグ = True Exit For End If If フラグ Then Exit For Next Next End Sub
(もこな2) 2023/03/24(金) 11:53:45
※こちらの方が理解しやすいかもしれません。
Sub さんぷる2() Dim MyRNG As Range, i As Long, フラグ As Boolean
Stop 'ブレークポイントの代わり
For Each MyRNG In ActiveSheet.Range("A2:A10") For i = 1 To MyRNG.Characters.Count If MyRNG.Characters(i, 1).Font.Color = vbRed Then フラグ = True Exit For End If If フラグ Then Exit For Next Next
If フラグ Then MsgBox "ユーザーフォーム起動" Else MsgBox "指定範囲を検索しましたが、赤文字はありませんでした" End If End Sub
(もこな2) 2023/03/24(金) 20:08:46
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.