戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
セル範囲内の入力確認

    [192067] セル範囲内の入力確認-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ けん -(2020/05/23(11:33))
    □U R L/
      けんです。
      
      よろしくお願いいたします。
      
      セル範囲内の入力を確認し、問題なければ入力範囲のアドレスを取得したいと思っています。
      
          B列        C列     D列     E列     F列     G列     H列     I列
       -------------------------------------------------------------------
       Sheet1	1	2	3	4	5	6	7
        -------------------------------------------------------------------
       項目選択	●	●	●		    ●		
        -------------------------------------------------------------------
       設定値        〇   〇		〇	    〇			
        -------------------------------------------------------------------
                  〇   〇
        -------------------------------------------------------------------
      
        -------------------------------------------------------------------							
      							
      条件は、
      ・設定値に入力はあるが項目選択が空白の場合は処理しない。(F列が該当)
      ・項目選択は「C列」から連続して入力されていない場合は処理しない。(H列が該当)
      ・「F列」「H列」が空白の場合は、「C列」の項目選択行から「E列」迄の設定値最終「〇」行
       を取得							
      
      条件はあるのですが、処理の仕方思いつきません。
      よろしくお願いいたします。
      
          shStr = "Sheet1"
          
          setRow = Sheet1.Columns(2).Find(shStr, , xlValues, xlWhole).Row
      
          Set rng = Sheet1.Cells(setRow, 2).CurrentRegion
          Set rng = rng.Offset(1, 1).Resize(rng.Rows.Count - 1, _
                                            rng.Columns.Count - 1)
          rng.Select '範囲確認
          If WorksheetFunction.CountA(rng) = 0 Then Exit Sub
          
          For Each r In rng
              If r.Value <> "" Then
                 '此処で処理を考えていました。
              End If
          Next
          
          '問題なければアドレス取得
      
      別方法でも構いません。
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192070] Re[1]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2020/05/23(12:33))
    □U R L/

      提示の例の場合、正解は?




    [192074] Re[2]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ けん -(2020/05/23(13:01))
    □U R L/

      マナ様

      対応、有難う御座います。

      処理しない「F列」「H列」が空白の場合
      myAddとして、「$C$16:$E$18」を取得します。

      条件があり、その条件どおりに処理すればできると思っていましたが、考えが進まず
      にいます。

      申し訳ありませんが、よろしくお願いいたします。




    [192075] Re[3]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2020/05/23(13:09))
    □U R L/

      項目選択の行が、16行目ということでしょうか。




    [192076] Re[4]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ けん -(2020/05/23(14:01))
    □U R L/

      マナ様

      すみません。

      項目選択の行は「16行目」となります。
      セルの入力に誤りが無ければ、Range範囲のアドレス「$C$16:$E$18」を取得となります。




    [192077] Re[5]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2020/05/23(14:12))
    □U R L/

      >・項目選択は「C列」から連続して入力されていない場合は処理しない。(H列が該当)

      では、C16が空白の場合はあるのでしょうか。




    [192080] Re[6]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ けん -(2020/05/23(14:40))
    □U R L/

      マナ様

      C16が空白の場合はアドレスを取得しません。
      C16に入力があり、設定値も入力していれば、D列以降に入力が無くてもアドレスを取得
      します。「$C$16:$C$17」




    [192082] Re[7]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2020/05/23(14:55))
    □U R L/

      1)C16が空白でないことを確認
      2)B16から右端セル(列)を調べる End(xlToRight)
      3)C列から右端の列までの範囲を検索範囲として
      4)最終列の○(xlByColumns、xlPrevious)を検索
      5)最終行の○(xlByRows、xlPrevious)を検索




    [192085] Re[8]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ けん -(2020/05/23(15:52))
    □U R L/
      マナ様
      
      考え方、有難う御座います。
      
      >1)C16が空白でないことを確認
          If rng.Cells(1, 1) <> "" Then
        空白であれば処理しない。
      
      >2)B16から右端セル(列)を調べる End(xlToRight)
       此処がよく解りません。
       ・設定値セルに入力があり項目選択セルが空白の場合は処理しない。(表F列)
       ・項目選択が連続していない場合は処理しない(表H列)
      
      >3)C列から右端の列までの範囲を検索範囲として
          myCol = rng.Find("*", , , , xlByColumns, xlPrevious).Column
          myRow = rng.Find("*", , , , xlByRows, xlPrevious).Row
       アドレス取得のための行・列の検索
      
      2)についてお教えください。
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192086] Re[9]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2020/05/23(16:02))
    □U R L/

      こことか参考に
      ht tp://www.niji.or.jp/home/toru/notes/8.html




    [192090] Re[10]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ けん -(2020/05/23(18:02))
    □U R L/
      マナ様
      
      >2)B16から右端セル(列)を調べる End(xlToRight)
       項目選択セルが空白で、設定値セルに入力がある場合の判定ができないので、次の
       コードとしました。
       これで
       ・設定値セルに入力があり項目選択セルが空白の場合は処理しない。(表F列)
       はできたのですが、
       ・項目選択が連続していない場合は処理しない(表H列)
       をどうしたらいいのか検討中です。
      
       
          shStr = "Sheet1"
          
          setRow = Sheet1.Columns(2).Find(shStr, , xlValues, xlWhole).Row
          setCol = Sheet1.Columns(2).Find(shStr, , xlValues, xlWhole).Column
          
          Set rng = Sheet1.Cells(setRow, setCol).CurrentRegion
          Set rng = rng.Offset(1, 1).Resize(rng.Rows.Count - 1, _
                                            rng.Columns.Count - 1)
          If rng.Cells(1, 1) <> "" Then
              For i = 2 To rng.Columns.Count
                  For j = 3 To rng.Rows.Count
                      If rng.Cells(j, i) <> "" Then
                          If rng(1, i) = "" Then Exit Sub
                      End If
                  Next j
              Next i
              myCol = rng.Find("*", , , , xlByColumns, xlPrevious).Column
              myRow = rng.Find("*", , , , xlByRows, xlPrevious).Row
          End If
      
          myAdd = Range(Cells(rng.Row, rng.Column), Cells(myRow, myCol)).Address
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192093] Re[11]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2020/05/23(18:23))
    □U R L/

      >項目選択セルが空白で、設定値セルに入力がある場合の判定ができないので

      設定値セルに関係なく、項目選択セルが空白は対象外ですよね????






    [192095] Re[12]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ けん -(2020/05/23(19:12))
    □U R L/
      マナ様
      
      説明不足で申し訳ありません。
      
      ・設定値セルに入力はあるが、項目選択セルが空白の場合は処理しない。(F列が該当)
      ・項目選択セルは「C列」から連続して入力されていない場合は処理しない。(H列が該当)
      ・C16の項目選択セルが空白の場合は処理しない。
      
      >2)B16から右端セル(列)を調べる End(xlToRight)
       項目選択セルに空白列が存在すると空白後のセルに入力されていることを判断できない
       ために「For i = 2 To rng.Columns.Count」としました。
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192096] Re[13]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2020/05/23(19:22))
    □U R L/

      End(xlToRight)で、F列は対象外(処理しない)になりますが?





    [192098] Re[14]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ けん -(2020/05/23(20:14))
    □U R L/
      マナ様
      
      理解不足で申し訳ありません。
      
      項目選択セルの途中に空白が存在しても空白以降に入力された列を範囲に含めなければ
      良いということですね。
      空白がある場合を検討しておりましたが解決です。
      ちなみに、確認はしておりますが、問題点、簡素化がありましたらお教えください。
      
          shStr = "Sheet1"
          
          setRow = Sheet1.Columns(2).Find(shStr, , xlValues, xlWhole).Row
          setCol = Sheet1.Columns(2).Find(shStr, , xlValues, xlWhole).Column
          
          Set rng = Sheet1.Cells(setRow, setCol).CurrentRegion
          
          If rng.Cells(2, 2) <> "" Then
              For i = 2 To rng.Cells(2, 1).End(xlToRight).Column - 1
                  For j = 3 To rng.Rows.Count
                      If rng.Cells(j, i) <> "" Then
                          If rng(1, i) = "" Then Exit Sub
                      End If
                  Next j
              Next i
              Set rng = rng.Offset(1, 1).Resize(rng.Rows.Count - 1, i - 2)
              myAdd = rng.Address
          End If


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192099] Re[15]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2020/05/23(21:45))
    □U R L/
      >問題点、簡素化がありましたらお教えください。
      
      すみません。何をしているか解読できません。
      
      Sub test()
          Dim ws As Worksheet
          Dim c As Range
          Dim rng As Range
          Dim myCol As Long, myRow As Long
          Dim myAdd As String
          
          Set ws = Sheet1
          Set c = ws.Columns(2).Find("Sheet1", , xlValues, xlWhole)
          If c Is Nothing Then Exit Sub
          Set c = c.Offset(1, 1)
          If c.Value = "" Then Exit Sub
          
          Set rng = Range(c, c.Offset(, -1).End(xlToRight)).EntireColumn
          If WorksheetFunction.CountIf(rng, "○") = 0 Then Exit Sub
          
          myCol = rng.Find("○", , , , xlByColumns, xlPrevious).Column
          myRow = rng.Find("○", , , , xlByRows, xlPrevious).Row
          
          myAdd = Range(c, ws.Cells(myRow, myCol)).Address
          
          MsgBox myAdd
          
      End Sub
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192103] Re[16]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ けん -(2020/05/23(23:27))
    □U R L/
      マナ様
      
      説明不足、理解不足と稚拙なコードで貴重な時間を割いていただき有難う御座います。
      
      提示いただいたコードを実行し、当たり前ですが取得したいアドレスを得られました。
      
      「Set rng = Range(c, c.Offset(, -1).End(xlToRight)).EntireColumn」
      で行の全ての列を選択していますが、表は一つではないため指定した表の範囲にしたい
      と思っております。
      (表の行の増減に対応)
      少し時間をいただき、増減対応の確認をお願いいたします。
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192104] Re[17]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2020/05/24(08:53))
    □U R L/
      例えば
      
      Sub test2()
          Dim ws As Worksheet
          Dim c As Range
          Dim n As Long
          Dim rng As Range
          Dim myCol As Long, myRow As Long
          Dim myAdd As String
          
          Set ws = Sheet1
          Set c = ws.Columns(2).Find("Sheet1", , xlValues, xlWhole)
          If c Is Nothing Then Exit Sub
          If c.Offset(1, 1).Value = "" Then Exit Sub
          
          n = c.Offset(1).End(xlToRight).Offset(-1).Value
          Set rng = c.CurrentRegion.Resize(, n + 1)
          If WorksheetFunction.CountIf(rng, "○") = 0 Then Exit Sub
          
          myCol = rng.Find("○", , , , xlByColumns, xlPrevious).Column
          myRow = rng.Find("○", , , , xlByRows, xlPrevious).Row
          
          myAdd = Range(c.Offset(1, 1), ws.Cells(myRow, myCol)).Address
          
          MsgBox myAdd
      
      End Sub
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192105] Re[18]: セル範囲内の入力確認-

    記事引用/メール受信=OFF■

    □投稿者/ けん -(2020/05/24(11:24))
    □U R L/

      マナ様

      こちらで考え確認をお願いしようとしておりましたが、表範囲に変更、有難う御座います。

      当初、考え方でいただいた
      >1)C16が空白でないことを確認
      >2)B16から右端セル(列)を調べる End(xlToRight)
      がポイントで、項目選択セルに空白が無い範囲を取得すれば、設定値セルに入力があっ
      ても処理しない。
      また、空白セル以降に入力があっても取得範囲外なので処理しないと言うことだったん
      ですね。

      ここまで思いが至らず設定値セルの確認、空白後の入力確認をしようとしていました。

      見当違いの質問等、誠に申し訳ありませんでした。

      提示いただいたコードは、使用させていただきますとともに、他にも活用させていた
      だきます。

      説明不足から始まり理解不足により、大変ご迷惑をお掛けしました。
      ご対応、有難うございました。

      解決とさせていただきます。




    [192106] Re[19]: セル範囲内の入力確認-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ けん -(2020/05/24(11:26))
    □U R L/

      すみません。
      解決チェック忘れてました。



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G