[[20070215121140]] 『マクロのInputBoxを使った置換』(初発) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロのInputBoxを使った置換』(初発)

 下のような置換をマクロを使って行いたいのですが、「対応するかっこがありません」
 というようなメッセージがでてきて途中で止まってしまいます。
 マクロ初級者なものでどこが悪いのか、どうか教えて下さい。
 よろしくお願い致します。

  Sub FOB20()

     Dim FOB As Integer
     Dim X As String

     FOB = InputBox("何パーセントにする?", "FOB")
         X = (FOB * 0.01)

     Columns("O:O").Select
     Selection.Replace What:="0.*", Replacement:=X, LookAt:=xlPart, _
         SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False
 End Sub


 数式でたとえば以下のようなものがあったとします。
=1*(1+0.05) 
これを
検索文字列 "0.*"
置換文字列 "0.07"
のように置換すると、数式は
=1*(1+0.07
となって、括弧が完結しないのでそのようなメッセージが出るのではないでしょうか。
マクロの問題ではなくて、置換しようとしている式をどうにかするべきでしょうね。
定数を直接式に入力して置くのではなくて、定数入力するセルを参照させ、
その定数をマクロで変更するとか。
 
ですが、不思議なことに、こちらは上記実行するとエラーにならずスルーするだけ?
Excel2003 VB6.0
(みやほりん)(-_∂)b


 なるほど!できました!!!What:="0.*"を What:="0.*)"にして、 
 X = (FOB * 0.01)をX = (FOB * 0.01) & ")"に直しましたら
 走りました!!!
 どうもありがとうございました!!!
 (初発)


 度々申し訳ありません。
 ImputBoxのキャンセルを選ぶと「型が一致しません」というエラーがでます。
 キャンセルの場合は、処理を中止したいのですが、これがまたうまくいきません。
 どうかアドバイスを再度よろしくお願い致します。

 Sub FOB何パー()

    Dim FOB As Integer
    Dim X As String

    FOB = InputBox("何パーセントにする?", "FOB")

      If FOB = "Nothing" Then
        MsgBox "中止"
        Exit Sub
        End If

      X = (FOB * 0.01) & ")"

    Columns("O:O").Select
    Selection.Replace What:="0.*)", Replacement:=X, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False
 End Sub

 Dim FOB As Integer → Dim FOB As String または Dim FOB As Variant
 
 If FOB = "Nothing" Then →  If FOB = "" Then
 
で当面は良いと思いますが、厳密にやりだすと、
「数値化できる文字列かどうか」という条件判断処理も必要になってきます。
(みやほりん)(-_∂)b


 みやほりん様、再度、ありがとうございました!
 無事に走りました!これで十分です。これ以上
 厳密に複雑にすると、理解不能に陥ります、きっと。
 どうもありがとうございました!
 (初発)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.