[[20170616155435]] 『Excel2000→Excel2016変更による互換性の不具合』(モモンガ) ページの最後に飛ぶ

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

 

『Excel2000→Excel2016変更による互換性の不具合』(モモンガ)

いつもお世話になってます。

PC変更となり、
以前のExcel2000で作成したマクロをExcel2016で継続して使用したいのですが、
変更に伴い互換性?の不具合で困っております。

動作として簡単に説明すると、
既存のBooK1(Excel2000)の任意データを、新しいBookを作成し貼り付け、
指定条件で抽出表示しています。

仕様として、
フォーム上に、コマンドボックスが4個とコマンドボタンが1個あります。
  コマンドボックス1:項目1
  コマンドボックス2:条件1
  コマンドボックス3:項目2
  コマンドボックス4:条件2
  コマンドボタン1:表示

コマンドボックスは、貼り付けた後でオートフィルタで抽出する用です。

コードを実行させると、「既にデータがありますが、置き換えますか」
と注意文が表示され、「OK」を押すと、再度同じ注意文が表示され、
再度「OK」を押すと、一応の動作は完了します。
(貼り付け出来てない列有り)
逆に、注意文の時に、「キャンセル」を押すと、
「実行エラー'1004': RangeクラスのTextToColumnsメゾッドが失敗しました。」
とエラー表示され、動作が中断されます。

下記にコード(抜粋)を記載しますが、
どこが悪さをしているのか分かりません。
なんでも良いので、アドバイスお願いします。

Private Sub 抽出_Click()

 Dim exiWB As String
 Dim NewWB As String
 Dim A As Workbook
 Dim C As Workbook
 Dim sh1 As Worksheet
 Dim sh2 As Worksheet

  Set A = ThisWorkbook
  exiWB = ThisWorkbook.Name
  Set C = Workbooks.Add(Template:=xlWBATWorksheet)
  NewWB = ActiveWorkbook.Name
  ActiveWorkbook.Sheets("Sheet1").Name = "データ"

  Set sh1 = Workbooks(exiWB).Worksheets("Sheet2")
  Set sh2 = Workbooks(NewWB).Worksheets("データ")

    With sh2
         sh1.Columns("E:G").Copy .Columns("B:D")
         sh1.Columns("B:C").Copy .Columns("E:F")
         sh1.Columns("H:I").Copy .Columns("G:H")
         sh1.Columns("K:L").Copy .Columns("I:J")
         sh1.Columns("D:D").Copy .Columns("K:K")
    End With

  Windows(exiWB).Activate
  Worksheets("Sheet2").Activate
  Application.CutCopyMode = False
  Worksheets("Sheet2").Activate
  Worksheets("Sheet2").Range("B65536").End(xlUp).Activate
  Worksheets("Sheet2").Visible = xlSheetVeryHidden
  Windows(NewWB).Activate

  With Worksheets("データ")
     Range("B:D,F:F,I:I,O:P,R:S,U:V").NumberFormatLocal = "@"
  End With

   Worksheets("データ").Columns("E:E").ColumnWidth = 30
   Worksheets("データ").Columns("F:F").ColumnWidth = 15

  Application.CutCopyMode = False
  Worksheets("データ抽出").Range("A1").Activate
  ActiveSheet.Range("A:W").AutoFilter
  Columns("B:B").Select
  Selection.TextToColumns Destination:=Range("B1"), 
  DataType:=xlDelimited, _
  FieldInfo _
  :=Array(1, 2)

            If ComboBox項目1.Value = "会員" Then
               If ComboBox条件1.Value = "会員含む" Then
                  Columns("W:W").Select
                  Selection.AutoFilter Field:=23
                            ・
              ・
              ・
              ・
              ・
              ・
   End If

  If Not ComboBox条件2.Value = Empty Then
      B = ComboBox条件2.Value
  Windows(NewWB).Activate
  Sheets("データ").Select
      Columns("K:K").ColumnWidth = 10
      Selection.AutoFilter Field:=n, Criteria1:="=**" & B & "*", 
  Operator:=xlAnd
  End If
  Worksheets("データ").Columns("W:W").Select
    Selection.NumberFormatLocal = ";;;"
  Worksheets("データ").Range("A2").Activate
End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


本題の前に、

せっかく、変数にセットしているのだから、

 >Set A = ThisWorkbook
 >Set C = Workbooks.Add(Template:=xlWBATWorksheet)
 >Set sh1 = Workbooks(exiWB).Worksheets("Sheet2")
 >Set sh2 = Workbooks(NewWB).Worksheets("データ")

Activateしない書き方に修正してみませんか。
一部できていますが、できていないとことろが多いです。

 >Worksheets("Sheet2").Activate

(マナ) 2017/06/17(土) 19:44


マナさんコメントありがとうございます。

>Activateしない書き方に修正してみませんか。
>一部できていますが、できていないとことろが多いです。

すみません。
セルのコピー貼り付けについては、教えて頂いて出来たのですが、
その他のところは分かりませんでした。

ちなみにお伺いしたいのですが、それとエラーとの関係は、
無きにしも非ずな感じでしょうか?

(モモンガ) 2017/06/19(月) 09:21


>それとエラーとの関係は、無きにしも非ずな感じでしょうか?

そもそも、何をしようとしているマクロかわからないのですが、
コードを読み解こうという気になれはかっただけです。

本題のエラーとは関係ないです。
おそらく、エクセルのバージョンとも関係ないです。
「区切り位置」の操作を、手作業で実行してみてください。
同じ結果になると思います。

(マナ) 2017/06/20(火) 19:46


そうですか。
言葉足らずも、目的地と地図を示して、行き方の問いに、
歩き方のご指導をして下さったってことですよね。
ありがとうございました。
(モモンガ) 2017/06/21(水) 13:08

コメント返信:

[ 一覧(最新更新順) ]


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