Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9967 / 13646 ツリー ←次へ | 前へ→

【24361】教えてください 澤田 淳 05/4/20(水) 15:53 質問[未読]
【24363】Re:教えてください IROC 05/4/20(水) 16:15 回答[未読]
【24364】Re:教えてください ウッシ 05/4/20(水) 16:20 回答[未読]
【24365】Re:教えてください ウッシ 05/4/20(水) 16:24 回答[未読]
【24540】Re:教えてください 澤田 淳 05/4/25(月) 9:46 お礼[未読]

【24361】教えてください
質問  澤田 淳 E-MAIL  - 05/4/20(水) 15:53 -

引用なし
パスワード
   文字の巾がそれぞれ違います。
例えば「A」=5.3mm「b」=3.9mm 「,」=2mm
文字列「A,b」の総巾は5.3+2+3.9=11.2mmになります。
文字、記号の巾は全部計ってエクセルの表にしてあるのですが、
インプットボックスに文字列を入力すると総巾が計算されて
メッセージボックスに表示されるようにしたいのですが
どうすればできるでしょうか。

【24363】Re:教えてください
回答  IROC  - 05/4/20(水) 16:15 -

引用なし
パスワード
   >文字、記号の巾は全部計ってエクセルの表にしてあるのですが、

どのようにでしょうか?

【24364】Re:教えてください
回答  ウッシ  - 05/4/20(水) 16:20 -

引用なし
パスワード
   こんにちは

Sheet1のA列に文字、B列に幅がセットしてあるとして、

  Dim i    As Long
  Dim fR    As Range
  Dim txtWidth As Double
  For i = 1 To Len(Me.TextBox1.Text)
    Set fR = Worksheets("Sheet1").Range("A:A").Find( _
     Mid(Me.TextBox1.Text, i, 1), , xlFormulas, xlWhole, , True, True)
    If Not fR Is Nothing Then
      txtWidth = txtWidth + fR(1, 2).Value
    End If
  Next
  MsgBox txtWidth

こんな感じで1文字ずつ調べるしかないのでは?

【24365】Re:教えてください
回答  ウッシ  - 05/4/20(水) 16:24 -

引用なし
パスワード
   Inputボックスでしたね。

Sub test()
  Dim i    As Long
  Dim fR    As Range
  Dim txtWidth As Double
  Dim v    As Variant
  
  v = Application.InputBox("文字入力", Type:=2)
  If VarType(v) = vbBoolean Then Exit Sub
  
  For i = 1 To Len(v)
    Set fR = Worksheets("Sheet1").Range("A:A").Find( _
      Mid(v, i, 1), , xlFormulas, xlWhole, , True, True)
    If Not fR Is Nothing Then
      txtWidth = txtWidth + fR(1, 2).Value
    End If
  Next
  MsgBox txtWidth

End Sub

【24540】Re:教えてください
お礼  澤田 淳 E-MAIL  - 05/4/25(月) 9:46 -

引用なし
パスワード
   ウッシ さん有難うございました。

完璧です。
どうやって質問して良いかも解らず
こんな質問の仕方で解ってもらえるかなと思っていましたが、
すぐにお返事頂き感謝感激です。

9967 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free