戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
文字列の式の数値を1000分の1にする

    [194746] 文字列の式の数値を1000分の1にする-

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

    □投稿者/ ひまわり -(2022/02/13(16:24))
    □U R L/
      お世話になります。
      InputBoxで選択したセルのmm単位の数値をm単位(数値を1000分の1)に変えて、式を組みたいのですが、
      仮置きセルに書き込みができません。(Aのコードで飛び飛びの選択セルの最初の値が連続して書き込まれる)
      他の方法で式中の数値mm単位を拾い出しm単位(数値を1000分の1)に変更できる方法があれば教えていただけない
      でしょうか。
      
      セル値は A1 225、B3 2570、C5 1000 をInputBox(Type:=8)で選択(選択セルやセル数は固定ではない)
           式 225+2570+1000 → 0.225+2.57+1.0にしたい
      
      下記@は mm単位のまま文字列の式はできる。
           飛び飛びの選択セルでも問題なく区切り記号を挿入しながら選択した複数セルの文字列を
           連結し式にできる。
      下記Aは mm単位をm単位にするため1000で割り式にするため、G列への書き込みが選択したセルの最初の
           数値のみ選択したセル数分書き込まれてしまう。
           
      '@このコードだとmm単位の式にできる
      Sub siki_mm()
              Dim rng1 As Range '対象範囲のセルを選択
              Dim Calc As String '複数の文字列を連結する四則演算子
              
          On Error GoTo Err'キャンセルの場合
              '仮置きのセルクリア(セル選択は10以下)
              Range("G1:G10").ClearContents
              
              '対象の複数セルを選択
              Set rng1 = Application.InputBox("セル範囲または「Ctrl」キーを押下したまま複数セルを選択してください。", Type:=8)
              If rng1 Is Nothing Then Exit Sub
              
              '複数の文字列を連結する四則演算子
              Calc = InputBox(Prompt:="文字列を結合する四則演算の記号を入力して下さい。", Default:="+")
              
              '式を組み立てる(区切り記号を挿入しながら選択した複数セルの文字列を連結)
              ActiveCell.Value = "=TEXTJOIN(""" & Calc & """,TRUE," & rng1.Address(False, False) & ")" 'Excel2016関数
              
              Set rng1 = Nothing
              
              ' 225+2570+1000 =の答え変換は別のコードで処理
      Err:
          Err.Clear
      End Sub
      
      'A単位mmを単位mに変換するため、G列に書き込みたいが選択セルの最初の数値のみが羅列される
      Sub siki_mm_m()
          Dim i As Integer
          Dim ctr As Integer '選択セル数
          Dim rng1 As Variant '対象範囲のセルを選択
          Dim rng2 As Variant '複数の文字列を連結する範囲
          Dim rng3 As String '複数の文字列を連結する四則演算子
          
        On Error GoTo Err'キャンセルの場合
      
          ' 仮置きのセルクリア(セル選択は10以下)
          Range("G1:G10").ClearContents
          ' 対象の複数セルを選択
          Set rng1 = Application.InputBox("セル範囲または「Ctrl」キーを押下したまま複数セルを選択してください。", Type:=8)
          If rng1 Is Nothing Then Exit Sub
          ' 選択セル数取得
          ctr = rng1.Count
      
      
        '***↓ここの書き込みがうまくできない***
          Range("G1:G" & ctr) = rng1
          ' 仮置きのセルに書き込み'※G列に縦に 「0.225」「2.57」「1.0」を書き込みたいがエラー
          Range("G1:G" & ctr).Value = rng1.Value
      
          ' 仮置きのセルの値の単位mmを単位mに変換
          For i = 1 To ctr
              Cells(i, 7).Value = Cells(i, 7).Value / 1000
          Next i
          
          ' 変数に入れる
          Set rng2 = Range("G1:G" & ctr)
          ' 複数の文字列を連結する四則演算子
          rng3 = InputBox(Prompt:="文字列を結合する四則演算の記号を入力して下さい。", Default:="+")
          ' 式を組み立てる(区切り記号を挿入しながら選択した複数セルの文字列を連結)
          ActiveCell.Value = "=TEXTJOIN(""" & rng3 & """,TRUE," & rng2.Address(False, False) & ")" 'Excel2016関数
          
          Set rng1 = Nothing
          Set rng2 = Nothing
          
          ' 計算式 0.225+2.57+1.0 にしたいが、0.225+0.225+0.225になる(答え変換は別のコードで処理)
      
      Err:
          Err.Clear
      End Sub
      
      Windows 11 と Excel2016


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

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



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [194747] Re[1]: 文字列の式の数値を1000分の1にする-

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

    □投稿者/ マナ -(2022/02/13(18:57))
    □U R L/
          ' 仮置きのセルの値の単位mmを単位mに変換
          Dim c As Range
          Dim n As Long
      
          For Each c In rng1
              n = n + 1
              Cells(n, 7).Value = c.Value / 1000
          Next
          
          ' 変数に入れる
          Set rng2 = Range("G1:G" & n)


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

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




    [194748] Re[2]: 文字列の式の数値を1000分の1にする-

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

    □投稿者/ ひまわり -(2022/02/13(19: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