Excel VBA質問箱 IV

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

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


10318 / 13644 ツリー ←次へ | 前へ→

【22439】文字のみ削除するにはどうしたらよいのでしょうか? 05/2/20(日) 23:30 質問[未読]
【22440】Re:文字のみ削除するにはどうしたらよいの... ichinose 05/2/21(月) 0:11 回答[未読]
【22473】Re:文字のみ削除するにはどうしたらよいの... 05/2/22(火) 11:20 お礼[未読]
【22486】ichinose さん お願いします 05/2/22(火) 19:22 質問[未読]
【22506】評価式の値を算出 ichinose 05/2/23(水) 0:23 発言[未読]
【22509】Re:評価式の値を算出 05/2/23(水) 8:59 お礼[未読]

【22439】文字のみ削除するにはどうしたらよいので...
質問   E-MAIL  - 05/2/20(日) 23:30 -

引用なし
パスワード
   はじめまして、よろしくお願いします。

A1のセルに、幅0.25*長さ2.0*高さ0.5
     ↓
B1のセルに、0.25*2.0*0.5

A2のセルに、(上幅0.2+下幅0.2)*0.5*長さ2.5
     ↓
B2のセルに、(0.2+0.2)*0.5*2.5

と言うように『全角文字列のみを削除』して表示させたいのですが、
本を読んでも、どう処理させて良いか分かりません。
どなたか教えて下さい。

【22440】Re:文字のみ削除するにはどうしたらよい...
回答  ichinose  - 05/2/21(月) 0:11 -

引用なし
パスワード
   ▼吉 さん:
こんばんは。

>はじめまして、よろしくお願いします。
>
>A1のセルに、幅0.25*長さ2.0*高さ0.5
>     ↓
>B1のセルに、0.25*2.0*0.5
>
>A2のセルに、(上幅0.2+下幅0.2)*0.5*長さ2.5
>     ↓
>B2のセルに、(0.2+0.2)*0.5*2.5
>
>と言うように『全角文字列のみを削除』して表示させたいのですが、
>本を読んでも、どう処理させて良いか分かりません。
>どなたか教えて下さい。
標準モジュールに以下のコードを記述して下さい。

'==================================================
Sub main()
  Range("b1").Value = del_wide(Range("a1").Value)
End Sub
'===============================================================
Function del_wide(in_str) As String
  For idx = 1 To Len(in_str)
   If LenB(StrConv(Mid(in_str, idx, 1), vbFromUnicode)) = 1 Then
     del_wide = del_wide & Mid(in_str, idx, 1)
     End If
   Next idx
End Function
これでmainを実行してみてください。

又は、セルB1に

「=del_wide(a1)」

とユーザー定義関数として指定してもよいと思います。
確認してみて下さい。

【22473】Re:文字のみ削除するにはどうしたらよい...
お礼   E-MAIL  - 05/2/22(火) 11:20 -

引用なし
パスワード
   ▼ichinose さん:
 こんにちわ!
 確認してみたところ・・・

 『出来ました。』

 謎が解けてうれしいです。
 本当にありがとうございました。
 これからもよろしくお願いします。!!

>▼吉 さん:
>こんばんは。
>
>>はじめまして、よろしくお願いします。
>>
>>A1のセルに、幅0.25*長さ2.0*高さ0.5
>>     ↓
>>B1のセルに、0.25*2.0*0.5
>>
>>A2のセルに、(上幅0.2+下幅0.2)*0.5*長さ2.5
>>     ↓
>>B2のセルに、(0.2+0.2)*0.5*2.5
>>
>>と言うように『全角文字列のみを削除』して表示させたいのですが、
>>本を読んでも、どう処理させて良いか分かりません。
>>どなたか教えて下さい。
>標準モジュールに以下のコードを記述して下さい。
>
>'==================================================
>Sub main()
>  Range("b1").Value = del_wide(Range("a1").Value)
>End Sub
>'===============================================================
>Function del_wide(in_str) As String
>  For idx = 1 To Len(in_str)
>   If LenB(StrConv(Mid(in_str, idx, 1), vbFromUnicode)) = 1 Then
>     del_wide = del_wide & Mid(in_str, idx, 1)
>     End If
>   Next idx
>End Function
>これでmainを実行してみてください。
>
>又は、セルB1に
>
>「=del_wide(a1)」
>
>とユーザー定義関数として指定してもよいと思います。
>確認してみて下さい。

【22486】ichinose さん お願いします
質問   E-MAIL  - 05/2/22(火) 19:22 -

引用なし
パスワード
   すいません
またまた質問ですが、
教えていただいた方法で謎は解けたのですが・・・
その出した答えを計算させようと思い『=Keisan()』
を作ったのですが、どうせだったら一緒に処理させようと思い

    A       B      C
1 幅0.2*長さ0.5 =del_wide(A1) =Keisan(B1)
2 幅0.2*長さ0.5 =KeisanT(A2)

考えてみたのですが、分かりませんでした。 

ちなみにセルC1の=Keisan(B1)の処理は下記のとおりです。
'---------------------------------------------------------------
Function Keisan(算出式, 四捨五入桁数) As Double
  If TypeName(算出式) = "Range" Then
    計算値 = 算出式.Value
  End If
  Keisan = Evaluate(計算値)
  Keisan = Round(Keisan, 四捨五入桁数)
End Function
'---------------------------------------------------------------
上記の方法と教えていただいた方法は合成出来ないのでしょうか?
よろしくお願いします。

【22506】評価式の値を算出
発言  ichinose  - 05/2/23(水) 0:23 -

引用なし
パスワード
   ▼吉 さん:
こんばんは。
題名が・・・、自分で「ichinose さん お願いします」じゃあ・・、
おかしくて笑ってしまったので、再投稿です。

よく仕様がわかっていませんが・・・、
>すいません
>またまた質問ですが、
>教えていただいた方法で謎は解けたのですが・・・
>その出した答えを計算させようと思い『=Keisan()』
>を作ったのですが、どうせだったら一緒に処理させようと思い
>
>    A       B      C
>1 幅0.2*長さ0.5 =del_wide(A1) =Keisan(B1)
>2 幅0.2*長さ0.5 =KeisanT(A2)
            ↑この計算が出来ればよいということでしょうか?

>
>考えてみたのですが、分かりませんでした。 
>
>ちなみにセルC1の=Keisan(B1)の処理は下記のとおりです。
>'---------------------------------------------------------------
'==============================
Function Keisan(算出式, 四捨五入桁数) As Double
  With Application
   Keisan = .Round(.Evaluate(del_wide(算出式)), 四捨五入桁数)
   End With
End Function
'===================================
Function del_wide(in_str) As String
  For idx = 1 To Len(in_str)
   If LenB(StrConv(Mid(in_str, idx, 1), vbFromUnicode)) = 1 Then
     del_wide = del_wide & Mid(in_str, idx, 1)
     End If
   Next idx
End Function

これで

「=keisan(a2,2)」

とすれば答えは出ますよ!!


後は、関数の仕様の問題ですね!!

'==============================
Function Keisan2(算出式, タイプ, Optional 四捨五入桁数)
'タイプ 1 計算値 それ以外 式
'四捨五入桁数 タイプが1のときは、必須
  式 = ""
  For idx = 1 To Len(算出式)
   If LenB(StrConv(Mid(算出式, idx, 1), vbFromUnicode)) = 1 Then
     式 = 式 & Mid(算出式, idx, 1)
     End If
   Next idx
  If タイプ = 1 Then
    With Application
     Keisan2 = .Round(.Evaluate(式), 四捨五入桁数)
     End With
  Else
    Keisan2 = 式
    End If
End Function

なんてして、機能拡張する仕様でも良いと思いますし・・・。

確認してみて下さい。

【22509】Re:評価式の値を算出
お礼   E-MAIL  - 05/2/23(水) 8:59 -

引用なし
パスワード
   ▼ichinose さん:
おはようございます。
確認してみたところ
『出来ました』
早速、使用させて頂きます。
本当にありがとうございました。
今後も、よろしくお願いします。

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