[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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
> 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
もし、他にもお考えがありましたら教えてください。
よろしくお願いします。
(にし) 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
もとのファイルには他にもマクロ記録で作ったものがあります。
ですが、テストでやったものは、新しいブックを立ち上げて試しました。
本日この後、問題のパソコンを操作できなくなります。
次に操作できるのが来週水曜日からになります。
いろいろありがとうございます。
またよろしくお願い致します。
(にし) 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
助かりました。
ありがとうございました!
(にし) 2013/11/15(金) 23:09
・・が、「別件」で下のサイトを参考に、
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.