2017-07-14 24 views
1

Excel 2016で、異なるセルに含まれる文字列に基づいて列を自動的に非表示にするマクロを作成しようとしています。現在、範囲R1:GJU1は、XにIF式を取り込む式です。すべてのヘルプは高く評価されExcelマクロ文字列に基づいて列を非表示

Run-time error '13': 

Type mismatch 

Sub Hide_Columns_Containing_Value() 

    Dim c As Range 

    For Each c In Range("R1:GJU1").Cells 
     If c.Value = "X" Then 
      c.EntireColumn.Hidden = False 
     End If 
    Next c 

End Sub 

が、私はこのエラーを取得する:

これは私のコードです!

+0

[This](https://stackoverflow.com/questions/8885506/excel-vba-run-time-error-13-type-mismatch)はあなたに何らかの助けになるかもしれません – wahwahwah

+0

'列(c.column ).EntireColumn.Hidden = False'です。エラーがその行にあると仮定します。 – BruceWayne

+0

その行にコードを使用しようとしましたが、同じエラーが発生しています。 – vash1422

答えて

0

私はそれをテストすることはできませんので、自分の携帯電話からこれを入力するが、これをやっている:

Columns(c.column).EntireColumn.Hidden = True 

は動作します。基本的には、あなたがしようとしているのはちょうどCell.Hideと言うだけで動作しません。 EntireColumn.Hiddenは、列を参照するときに機能します。だから、このcells' columncolumnを非表示にする必要があります。

私はまた、あなたが、意味Falseにそれを設定している再表示気づきました。私はあなたが実際にそれを見た目にしようとしていない限り、間違って行われたと推測しています。

完全なコードは次のようになります。

Sub Hide_Columns_Containing_Value() 

Dim c As Range 

For Each c In Range("R1:GJU1").Cells 
    If c.Value = "X" Then 
     Columns(c.column).EntireColumn.Hidden = True 
    End If 
Next c 

End Sub 

は、それが動作するかどうか、私に教えてください!

+0

体重計に感謝します。私のワークシートには、最初にユーザーのために非表示の列があります。私はドロップダウン(データ検証範囲を使用して)R1:GJU1をIF文で 'X'に変更しています(主にドロップダウンで動作するマクロを取得できなかったためです)。 私はあなたのコードを使用して、それは動作します!今、ユーザーがドロップダウンで別のオプションを選択して、以前の列を元に戻す(ドロップダウンの古い基準で)と、新しい列のみを表示できるようにしたい場合はどうでしょうか? – vash1422

+0

ああ、それははるかに理にかなっています!コードは全然助けてくれましたか? – Busse

+0

申し訳ありません、私の前のコメントを編集しました。コードは、特定のセルの値だけを表示するように動的にするために最適化しようとしました。 – vash1422

関連する問題