[[20131102091107]] 『Excel2010でエラーが出てしまう』(にし) ページの最後に飛ぶ

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

 

『Excel2010でエラーが出てしまう』(にし)

 かなり前に人から譲り受け使用していました。
 エクセル2007までは正常に動いていたのですが、エクセル2010ではエラーが出ます。
 windows7です。

  18行目 namae = Trim(StrConv(Str(cnter), 4))
 
 とりあえずここで 実行時エラー5 
          プロシージャの呼び出しまたは引数が不正です。
 
 と出ます。
 
 きっとこの後も何度も止まる箇所があると思います。
 知識がないため、どう書き変えたらいいのか具体的に教えていただけると助かります。
 よろしくお願いします。
 
 
 

  Dim ws As Worksheet, data_ws As Worksheet
    Dim kamokusu As Integer, cnter As Integer, dataend As Integer, gyo As Integer
    Dim check(10) As Integer

    Dim namae As String

    check(1) = Sheets("データ入力").Range("M1")
    check(2) = Sheets("データ入力").Range("M2")
    check(3) = Sheets("データ入力").Range("M3")
    check(4) = Sheets("データ入力").Range("M4")
    check(5) = Sheets("データ入力").Range("M5")
    check(6) = Sheets("データ入力").Range("M6")
    check(7) = Sheets("データ入力").Range("M7")
    check(8) = Sheets("データ入力").Range("M8")
    check(9) = Sheets("データ入力").Range("M9")

    kamokusu = Sheets("データ入力").Range("H7") 
    dataend = 289                               '最大データ入力件数+1

 '科目シートをクリア
 For cnter = 1 To 9

    namae = Trim(StrConv(Str(cnter), 4))
    Set ws = Worksheets("科目" & namae)
    ws.Range("A5:G292").ClearContents
    ws.Range("J5:J292").ClearContents

 Next cnter

 'データ入力シートをワーク用にコピーして編集

    Sheets("データ入力").Copy Before:=Sheets(1)
    Sheets("データ入力 (2)").Name = "ワーク"

    Set data_ws = Worksheets("ワーク")

    data_ws.Columns("D:D").Delete Shift:=xlToLeft
    data_ws.Rows("1:10").Delete Shift:=xlUp
    data_ws.Columns("C:C").Cut
    data_ws.Columns("A:A").Insert Shift:=xlToRight

'ループ開始 科目1から科目Xまで順に科目シートを更新する

For cnter = 1 To kamokusu

    If check(cnter) = 1 Then

    '科目コードでフィルターをかける

        data_ws.Columns("A:A").AutoFilter
        data_ws.Columns("A:A").AutoFilter Field:=1, Criteria1:=cnter

    '科目シートを指定
        namae = Trim(StrConv(Str(cnter), 4))
        Set ws = Worksheets("科目" & namae)

    '科目シートにデータをコピー

        data_ws.Range(Cells(2, 2), Cells(dataend, 8)).Copy
        ws.Range("A5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False

        data_ws.Application.CutCopyMode = False

        data_ws.Range(Cells(2, 11), Cells(dataend, 11)).Copy
        ws.Range("J5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False

        data_ws.Application.CutCopyMode = False

        data_ws.Columns("A:A").AutoFilter Field:=1
    End If

'ループ終了

     DoEvents

Next cnter

'ワーク用シートを削除

    data_ws.Select
    Application.DisplayAlerts = False
    Application.CutCopyMode = False
    ActiveWindow.SelectedSheets.Delete
    Application.DisplayAlerts = True

 For cnter = 1 To kamokusu
    If check(cnter) = 1 Then
        namae = Trim(StrConv(Str(cnter), 4))
        Worksheets("科目" & namae).Activate
        Module7.頁計
    End If

'ループ終了

     DoEvents

Next cnter

    Sheets("データ入力").Select

End Sub


namae = Trim(StrConv(Str(cnter), vbWide))
としてみても同じでしょうか。
(みやほりん) 2013/11/02(土) 13:27

 > 18行目 namae = Trim(StrConv(Str(cnter), 4))
 2010で正常に機能しているので、もしかしたら
 Trim StrConv Str のどれかがSub/Function 名で使用されている可能性があるかも。

 とりあえず

 namae = vba.Trim(vba.StrConv(vba.Str(cnter), 4))

 にしておくとか?
(seiya) 2013/11/02(土) 14:26

早速のご回答ありがとうございました。
 
 やはり同じ18行目で エラー5 になりました。

 もし、他にもお考えがありましたら教えてください。
 よろしくお願いします。
(にし) 2013/11/02(土) 15:44


 sub test
     dim aaa as string
     aaa = trim("  A   ")
     aaa = strconv("a",4)
     aaa = str(1)
 end sub

これを実行してみると、エラーが出ますか?
(みやほりん) 2013/11/02(土) 15:50


 もし

  namae = vba.Trim(vba.StrConv(vba.Str(cnter), 4))

 でエラーになるなら、参照設定が外れている可能性あり。
(seiya) 2013/11/02(土) 16:07

ご回答くださっているお二人の方へ

 ありがとうございます。

  エラー5になりました。

 参照設定はどのように直せばよろしいでしょうか。
(にし) 2013/11/02(土) 16:22


 VBE画面で

 [ツール] - [参照設定]

 通常

 Visual Basic For Applications
 Microsoft Excel 14.0 Object Library
 Microsoft Office 14.0 Object Library

 等にチェックが入っていると思いますが、何か外れていませんか?
 それと、参照不可になっている項目は有りませんか?

(seiya) 2013/11/02(土) 16:37


  挙げていただいた3つと、OLE Automation の合わせて4つにチェックが入っています。
  参照不可という言葉は見当たりません。
  他に確認するところがあるのでしょうか。
(にし) 2013/11/02(土) 17:05


 だとすると、参照設定ではないですね。
 みやほりんさんのコードは試しましたか?
(seiya) 2013/11/02(土) 17:11

  

   みやほりん様のコードも試しました。

   aaa = strconv("a",4)

   ここで、エラー5になりました。

   
(にし) 2013/11/02(土) 17:16


 その行を消して次の行がどうなるか確認してください。
(seiya) 2013/11/02(土) 17:18

 

   該当行を消してみました。
   何も起こりませんでした。
(にし) 2013/11/02(土) 17:22


 ということは StrConv関数が機能していないということですね。

 このブックにほかのProcedure、またはAddIn などありますか?
(seiya) 2013/11/02(土) 17:31

  Procedure、またはAddIn についてうまく把握できていませんが、

  もとのファイルには他にもマクロ記録で作ったものがあります。

  ですが、テストでやったものは、新しいブックを立ち上げて試しました。

  
  本日この後、問題のパソコンを操作できなくなります。
 
  次に操作できるのが来週水曜日からになります。

  いろいろありがとうございます。

  またよろしくお願い致します。
(にし) 2013/11/02(土) 17:59


 表題の件について
 未だ解決できておりません。

  止まってしまうブックには最初に表記したものの他に、以下の2種類のものがあります。

  1,「頁計」 はC40に37行づつプラスしてC188 まで同じ物が5つあります。
   2種類ともそれのみでは正常に動作します。

  どなたか解決方法のご教授お願いいたします。

1,「頁計」

 Sub 頁計()

     Range("H30").Select
     Selection.AutoFill Destination:=Range("H30:H292"), Type:=xlFillDefault
     Range("H5").Select

 'C40が空白でなければ頁計を入れる 

       Dim slt_rug As Range
       Set slt_rug = Range("c40")

  If IsEmpty(slt_rug) = False Then

  Range("C41:C42").Select

     Selection.EntireRow.Insert
     Range("C41").Select
     ActiveCell.FormulaR1C1 = "頁  計"
     Range("C42").Select
     ActiveCell.FormulaR1C1 = "前頁より繰越"

  Range("H41").Select

     ActiveCell.FormulaR1C1 = "=R[-1]C"
     Range("H42").Select
     ActiveCell.FormulaR1C1 = "=R[-1]C"
     Range("D41").Select
     ActiveCell.FormulaR1C1 = "=SUM(R[-38]C:R[-1]C)"
     Range("D42").Select
     ActiveCell.FormulaR1C1 = "=R[-1]C"
     Range("D41:D42").Select
     Selection.Copy
     Range("F41:F42").Select
     Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
         SkipBlanks:=False, Transpose:=False
     Application.CutCopyMode = False

     Range("C291:C292").Select
     Selection.EntireRow.Delete

     Range("K15").Select

  End If

       Dim slt_rug2 As Range
       Set slt_rug2 = Range("c77")

  If IsEmpty(slt_rug2) = False Then

     Range("C78:C79").Select
     Selection.EntireRow.Insert
     Range("C78").Select
     ActiveCell.FormulaR1C1 = "頁  計"
     Range("C79").Select
     ActiveCell.FormulaR1C1 = "前頁より繰越"

  Range("H78").Select
  ActiveCell.FormulaR1C1 = "=R[-1]C"
  Range("H79").Select

     ActiveCell.FormulaR1C1 = "=R[-1]C"
     Range("D78").Select
     ActiveCell.FormulaR1C1 = "=SUM(R[-38]C:R[-1]C)"
     Range("D79").Select
     ActiveCell.FormulaR1C1 = "=R[-1]C"
     Range("D78:D79").Select
     Selection.Copy
     Range("F78:F79").Select
     Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
         SkipBlanks:=False, Transpose:=False
     Application.CutCopyMode = False

     Range("C291:C292").Select
     Selection.EntireRow.Delete

     Range("K15").Select

  End If

2,「印刷」

   ActiveSheet.PageSetup.PrintArea = "$A$42:$J$78"

      ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True

(にし) 2013/11/11(月) 11:18


 とりあえず、たぶん関係ないと思うけど
 「国別情報の設定」はどうなってますか?

 Win7だと、
 [コントロール パネル]→[時計、言語、および地域]→[地域と言語]
 の中の[場所] タブを開いて、現在の場所が「日本」になっているか。

 それから、StrConvじゃなくて Application.Dbcs を使ってみるとどうか。

 StrConv("a", 4) だと、Application.Dbcs("a") って感じで変更。
 Trim(StrConv(Str(cnter), 4)) だと、Trim(Application.Dbcs(Str(cnter)))
  
(HANA) 2013/11/12(火) 17:02

 
 Application.Dbcs に書き換えました。
 エラーなく正常に動きました。

 助かりました。
 ありがとうございました!
(にし) 2013/11/15(金) 23:09


「StrConv」がエラーになる件ですが、
私も同様に先週から悩んでおり、ここを拝見してまして、
「Application.Dbcs」に変えて対応し始めていました。

・・が、「別件」で下のサイトを参考に、

http://support.microsoft.com/kb/2297924/ja

「互換モードでこのプログラムを実行する」をオフにすると
「StrConv」の関数も使用できるようになりました。
一度、試してみてください。

(たけ) 2013/11/20(水) 16:14


コメント返信:

[ 一覧(最新更新順) ]


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