このトピックに書きこむ |
---|
Re[2]: 文字列の式の数値を1000分の1にする | |
---|---|
[194748] Re[2]: 文字列の式の数値を1000分の1にする- ■ / 記事引用/メール受信=OFF■ □投稿者/ ひまわり -(2022/02/13(19:26)) □U R L/ マナさん できました。 本当にありがとうございます。 |
[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のコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[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 ++++++++++++++++++++ |