Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


498 / 13645 ツリー ←次へ | 前へ→

【80046】vbaで複数関数使用し、エラーになります。 はろ 18/7/14(土) 15:43 質問[未読]
【80047】Re:vbaで複数関数使用し、エラーになります... γ 18/7/14(土) 19:36 発言[未読]
【80049】Re:vbaで複数関数使用し、エラーになります... はろ 18/7/14(土) 20:24 お礼[未読]
【80053】解決しました はろ 18/7/15(日) 20:41 お礼[未読]

【80046】vbaで複数関数使用し、エラーになります。
質問  はろ  - 18/7/14(土) 15:43 -

引用なし
パスワード
   excel vba です。
WorksheetFunctionの関数で「型が一致しません。」でエラーになります。


    Worksheets("シート名").Activate
    Range("A1").AutoFilter Field:=11, Criteria1:=条件1
    Range("A1").AutoFilter Field:=25, Criteria1:=条件2
    
    Dim Rw As Long
    Dim va As Variant
    If ActiveSheet.FilterMode Then
      Rw = Cells(Rows.Count, 1).End(xlUp).Row
      If Rw > 1 Then
        va = Application.WorksheetFunction.Index(Worksheets("シート名").Range("E2:E" & Rw).SpecialCells(xlCellTypeVisible), Application.WorksheetFunction.Mode(Application.WorksheetFunction.Match(Worksheets("シート名").Range("E2:E" & Rw).SpecialCells(xlCellTypeVisible), Worksheets("シート名").Range("E2:E" & Rw).SpecialCells(xlCellTypeVisible), 0)))
        
        
        Worksheets("シート名2").Cells(j, 3).Value = va
      End If
    End If

【80047】Re:vbaで複数関数使用し、エラーになりま...
発言  γ  - 18/7/14(土) 19:36 -

引用なし
パスワード
   随分長い式ですね。
ご自分でも理解できない複雑さではないですか?

Worksheets("シート名").Range("E2:E" & Rw).SpecialCells(xlCellTypeVisible)
が何度も出てきます。ここは工夫できそうですね。

例えば
Set rng = Worksheets("シート名").Range("E2:E" & Rw).SpecialCells(xlCellTypeVisible)
などとして、rngを使って式を簡素化してみてはどうですか?
その過程でエラーの原因がわかるのではないですか?

# どんなことを実行したいのかの説明もなしにコードだけ出されても、
# 判じ物でもあるまいし。ご自分で解決するよりないと思います。

【80049】Re:vbaで複数関数使用し、エラーになりま...
お礼  はろ  - 18/7/14(土) 20:24 -

引用なし
パスワード
   用途を伝えるのを忘れました。
オートフィルタで抽出したデータから最も多いデータ名を取得したいのです。


▼γ さん:
>随分長い式ですね。
>ご自分でも理解できない複雑さではないですか?
>
>Worksheets("シート名").Range("E2:E" & Rw).SpecialCells(xlCellTypeVisible)
>が何度も出てきます。ここは工夫できそうですね。
>
>例えば
>Set rng = Worksheets("シート名").Range("E2:E" & Rw).SpecialCells(xlCellTypeVisible)
>などとして、rngを使って式を簡素化してみてはどうですか?
>その過程でエラーの原因がわかるのではないですか?
>
># どんなことを実行したいのかの説明もなしにコードだけ出されても、
># 判じ物でもあるまいし。ご自分で解決するよりないと思います。

【80053】解決しました
お礼  はろ  - 18/7/15(日) 20:41 -

引用なし
パスワード
   WorksheetFunctionを消して、Application.Index・・・・に修正したらなぜか動きました。
あとは、フィルタの件数が1件のみの時は、その名称をそのまま取得するように追加しました。


▼γ さん:
>随分長い式ですね。
>ご自分でも理解できない複雑さではないですか?
>
>Worksheets("シート名").Range("E2:E" & Rw).SpecialCells(xlCellTypeVisible)
>が何度も出てきます。ここは工夫できそうですね。
>
>例えば
>Set rng = Worksheets("シート名").Range("E2:E" & Rw).SpecialCells(xlCellTypeVisible)
>などとして、rngを使って式を簡素化してみてはどうですか?
>その過程でエラーの原因がわかるのではないですか?
>
># どんなことを実行したいのかの説明もなしにコードだけ出されても、
># 判じ物でもあるまいし。ご自分で解決するよりないと思います。

498 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free