- ベストアンサー
エクセルでマクロの記録が出来ません。
エクセルでマクロの記録が出来ません。 エクセルのA列とB列に1,000行のデータがあります。 マクロの記録を起動します。 1.B1セルを選択 2.右クリックで挿入を選択 3.A列とC列にデータが有り、B列は空白となる。 4.B1セルを選択します。右クリックの貼り付けを選択。 マクロの起動前にクリップボードにあらかじめコピーしておいた 以下の式を貼り付けます。 =IF(A1="","",IF(ISERROR(FIND("-",ASC(A1))),IF(LEFT(ASC(A1),1)<>"9",MID(A1,1,3) &"-"&MID(A1,4,5)&"-"&MID(A1,9,2)&"-"&MID(A1,11,2)&"-"&MID(A1,13,2),IF(LEFT(ASC(A1),2)= "9X",MID(A1,1,3)&"-"&MID(A1,4,11),IF(LEFT(ASC(A1),1)="9",MID(A1,1,5)&"-"&MID(A1,6,5)& "-"&MID(A1,11,2)&"-"&MID(A1,13,2),""))),IF(FIND("-",ASC(A1))=6,A1,MID(A1,1,3)&"-"& MID(A1,4,11)))) 5.「Ctrl」+「C」 6.エクセルの左上の名前ボックスを B1 → B1:B1000に変更。B列が選択されます。 7.「Ctrl」+「V」 8.B列に式で変換されたデータが入りました。B列が選択されたままです。 9.「Ctrl」+「C」 10.右クリックで形式を選択して貼り付けで「値」を選んでOKをおす。 セルに入っていた式は全て消えました。B列が選択されたままです。 11.マウスポインタをセルのA1におく。B列の選択が解除されました。 マクロの記録を終了 これでNO.4の操作の時に「記録できません」と表示されます。 データを一旦削除し、再度、A列とB列にデータを入れて マクロを実行してもデータB列がC列に移動しB列は空白です。 実際にマクロの記録中でもNO.1からNO.11の操作は出来ています。 なぜ記録されないのでしょうか? どうすれば記録できますか? よろしくお願いします。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (9)
- Wendy02
- ベストアンサー率57% (3570/6232)
- Wendy02
- ベストアンサー率57% (3570/6232)
- Wendy02
- ベストアンサー率57% (3570/6232)
- Wendy02
- ベストアンサー率57% (3570/6232)
- Wendy02
- ベストアンサー率57% (3570/6232)
- Wendy02
- ベストアンサー率57% (3570/6232)
- Wendy02
- ベストアンサー率57% (3570/6232)
- Wendy02
- ベストアンサー率57% (3570/6232)
- Wendy02
- ベストアンサー率57% (3570/6232)
お礼
Function ConvertNumbersの件ありがとうございます。 最初に戻ってすいません。9月27日15:28 教えていただいたG列にデータ、H列に編集内容を挿入を Sub 編集集計()としてModule1に入れてあります。 Sub 編集集計() With ActiveSheet .Columns(8).Insert With .Range("H1", Cells(Rows.Count, 7).End(xlUp).Offset(, 1)) .Formula = "=ConvertNumbers(RC[-1])" '.FormulaR1C1 = "=ConvertNumbers(RC[-1])" .Value = .Value .NumberFormatLocal = "00000000000000" '* .HorizontalAlignment = xlLeft End With End With End Sub ---------------------------------------------- Function ConvertNumbers(ByVal arg As Variant) As String 以下省略 End Function 単独では問題ないのですが別のプロシージャーからCall 編集集計で呼び出すと駄目です。 教えてもらったものを単独でF8で動かすと .Formula = "=ConvertNumbers(RC[-1])"の次は Function ConvertNumbersからEnd Functionの間でループして データがなくなると .Value = .Value に移動します。 別プロシージャーからCallでよぶ場合 同じくF8で動作を見ると .Formula = "=ConvertNumbers(RC[-1])"の次は .Value = .Value に移動でセルH列にはすべて#NAME?になってしまいます。 Call文をやめて直接結合させても駄目でした。 さらにまったく別のプロシージャーからCallでよぶ場合は 正常動作です。 ちなみに駄目な方のプロシージャーのCall文の前はこうです。 F8で確認中はプロシージャーが入っているエクセルとは 別にBOOK2が開いています。 Dim fName As String Dim wBook As Excel.Workbook Dim wSheet As Excel.Worksheet Dim buf As String Dim rng As Range Dim i As Integer Dim fLine As Variant Dim fso As Object Dim dPath As String fName = Application.GetOpenFilename( _ FileFilter:="CSVファイル(*.csv),*.csv" _ Application.ScreenUpdating = False Application.Calculation = xlManual Set fso = CreateObject("Scripting.FileSystemObject") dPath = fso.GetParentFolderName(fName) Application.SheetsInNewWorkbook = 1 Set wBook = Workbooks.Add Set wSheet = wBook.Worksheets(1) wSheet.Name = "集計" Set rng = wSheet.Range("A1") Dim n As Variant n = FreeFile Open fName For Input As #n i = 0 Do Until EOF(n) Line Input #n, buf fLine = Split(buf, ",") rng.Offset(i).Resize(, UBound(fLine) + 1).Value = fLine i = i + 1 Loop Close #n 'wSheet.UsedRange.FormulaR1C1 = wSheet.UsedRange.Value wSheet.UsedRange.Formula = wSheet.UsedRange.Value '「rng」がworkbooks("編集").worksheets("集計").range("A1") Call 編集集計 (又はCallをやめてここにそのまま記述)
補足
ありがとうございます。正常動作はしました。 >データのある部分にカーソルを置き、実行すれば、 >データの先頭に飛び、実行するか聞いてきます。 A列に対象データがある状態でA列にカーソルを置いて、 マクロを起動させると ("ここから、右側の列に出力されます が表示されます。OKをクリックで正常動作します。 記述に MsgBox "データ列を選択してください。 があるのですがこれが表示されません。 これは表示されるのが正規でしょうか?