[[20230323230740]] 『ボタンを押すと指定したセル内に赤字があれば、入』(しょうちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ボタンを押すと指定したセル内に赤字があれば、入力フォームが開くようにしたいです。』(しょうちゃん)

マクロ初心者です。
コマンドボタンを押すと、指定したセルに赤字があれば、入力フォームが開いて入力フォーム上に
名前(特定の複数人)とテキストを入力して、パスワード(名前別に)を入れて判定を行い、合っていれば
指定したセルに、テキストと名前が転記されるようにしたいのですが可能でしょうか?
宜しくお願いします。

< 使用 Excel:Excel2021、使用 OS:Windows10 >


https://axcis.co.jp/vba/?utm_source=yahoo&utm_medium=cpc&yclid=YSS.1001131688.EAIaIQobChMIu-iGnrHw-wIVUq6WCh3e_A-CEAAYASAAEgLGTfD_BwE

https://www.techsoudan.com/tech-support.html?r=ppc%7Cyahoolpa%7C6%7C&mkwid=&jpkw=%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%E3%83%9E%E3%82%AF%E3%83%AD%E3%82%B3%E3%83%BC%E3%83%89&pmt=b&pdv=c&pkw=%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%E3%83%9E%E3%82%AF%E3%83%AD%E3%82%B3%E3%83%BC%E3%83%89&JPDC=b&JPNW=s&pcrid=632725625241&pdv=c&JPRC=1&JPAF=txt&campaignid=18801034455&yclid=YSS.1001207837.EAIaIQobChMIu-iGnrHw-wIVUq6WCh3e_A-CEAAYAyAAEgLNUPD_BwE
(ココス) 2023/03/23(木) 23:34:53


>指定したセルに赤字があれば
指定したセルとはどこですか。
>パスワード(名前別に)を入れて判定を行い
判定はどうやって確認しているのですか。
>名前(特定の複数人)とテキストを入力して
リストを作成するということですか。
テキストとは何ですか。
>テキストと名前が転記されるようにしたいのですが可能でしょうか?
行列が分かるようにレイアウトを提示してください。

(syo) 2023/03/24(金) 08:09:24


syoさま、お返事ありがとうございます。

指定したセルは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


>指定したセルはA2:A10といった感じです。
>ActiveCell.Characters(i, 1)

提示とコードが一致していませんか意図したものですか?

(もこな2) 2023/03/24(金) 09:01:15


もこな2さま

申し訳ありません、当初はシート全体を対象にしたのですが
赤字があっても無視したいセルがありましたので変更しました。
ActiveCell.Characters(i, 1)をどう変えたらいいでしょうか?
(しょうちゃん) 2023/03/24(金) 09:18:28


>当初はシート全体を対象にしたのですが〜
それなら、なおさら「ActiveCell」なのは解せないのですが・・・・
 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.