2016-07-28 14 views
1

Excelファイルに問題があります。私は昨年マクロをプログラミングして、ワークブック内のすべてのワークシートをタブカラーとして緑色に選択しました。昨日まですべてがすべてのコンピュータで正常に動作していました。実際にそのファイルを変更する必要があるコンピュータは、異なる動作を開始し、最初のワークシートのみを選択します。私はアンインストールし、再度インストールExcelをインストールしましたが、それは何も変更しませんでした。私たちはWindows 7 Pro x64とOffice 2013 Homeおよびビジネスで動作しています。ここでExcelマクロが2台のコンピュータで異なる動作をしています

は私のコードです:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 

    Dim selection As Boolean 
    selection = False 
    For Each ws In ActiveWorkbook.Worksheets 
     If ws.Tab.Color = 5296274 Then 
      If selection = False Then 
       ws.Select 
       selection = True 
      Else 
       ws.Select (False) 
      End If 
     End If 
    Next 

End Sub 

+0

「ActiveWorkbook」の代わりに、一度に複数のブックが開いていてこれがアクティブなものではない場合に、「ThisWorkbook」を使用しますか? –

+0

だから問題は何ですか?何がうまくいかない?あなたはコードをステップアップしようとしましたか? – Andreas

+0

@アンドレアス私はあなたの最初の2つの質問に対する答えは、それが最初のシートでは動作しますが、他のシートには(もしあれば)他のものではなく、すべてのシートで動作するはずです。しかし、タグ付けは役に立たない。 – pnuts

答えて

0

selection1

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 

    Dim replaceSelection As Boolean 
    replaceSelection = True 

    For Each ws In ActiveWorkbook.Worksheets 
     If ws.Tab.Color = 5296274 Then 
      ws.Select replaceSelection 
      replaceSelection = False 
     End If 
    Next 
End Sub 
+0

答えに感謝します。それは今朝、他のコンピュータで異なって行動し始めました。ご参考までに、xlsmファイルを使用して約500の製造手順を作成しました。 –

0

のような何か他のものに変数名を変更してみてくださいありがとうここで考えがあります。 2台のコンピュータでExcelで使用できるVBA参照の違いを確認します。

  • VB Editorを開くには、Alt + F11キーを押します。
  • [ツール]> [参照情報]に移動します。
  • スクリプトが動作しないコンピュータで、他のコンピュータで選択されている参照のチェックボックスをクリックします。
0

このタブカラーで複数のシートが存在すること、および選択を変更するものがないことを確認するには、このコードを試してください。
タブの色が2枚未満の場合はメッセージボックスが表示されます。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    Dim ws As Excel.Worksheet 
    Dim strNames As String 
    Dim wsNames() As String 
    Dim wsCount As Integer 

    For Each ws In ThisWorkbook.Worksheets 
     If ws.Tab.Color = 5296274 Then 
      strNames = strNames & ":" & ws.Name 
     End If 
    Next 

    strNames = Mid(strNames, 2) 
    wsNames = Split(strNames, ":") 
    wsCount = UBound(wsNames) + 1 
    If wsCount < 2 Then MsgBox strNames ' to make sure more than one sheet 
    If wsCount > 0 Then 
     ThisWorkbook.Sheets(wsNames(0)).Select 
     ThisWorkbook.Sheets(wsNames).Select 
    End If 
End Sub 
-1

一部のコンピュータでは動作していますが、他のコンピュータでは動作していないため、非常に奇妙です。私たちはVMWareワークステーションを使用しています。そのワークブックテンプレートを作成してから1年後に何の理由もなくコードは機能しなくなりました。

0

私は同じコンピュータで1週間から同じ問題を抱えています。 マクロが正常に動作する前に、突然最初のワークシートのみが選択されました。同じラップトップで!

ActiveWorkbook.Worksheetsの(偽)の引数は(SourceTabsは、(tは、2))。その間にプッシュされた私はいくつかのウィンドウまたはOffice更新プログラムを考える はもう

が認識されない(偽)を選択しているようです彼らは問題を引き起こしています。これが私が考えることができる唯一のことです。

シートを選択する方法を変更する必要がありました シート(シートリスト)。 をSheetListを使用して、必要なシートの名前の配列として使用します。