質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.32%

  • VBA

    1906questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1638questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • マクロ

    238questions

    定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

VBAでエラーが発生する。

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 235

zuzu1984

score 4

自宅PCのExcelのライセンスが切れ、LibreOfficeを使用しているのでエラーの文言が違うかもしれませんが、

「オブジェクトにアクセスできません。
無効なオブジェクト参照。」と、エラーが表示されます。

場所は以下です。
Set Star = Cells(C_Row, C_Clm)

【やりたいこと】
1) 範囲はI8:T17
2) 上記の範囲の中で、セルに色がついている場合は無視
3) セルに色がついておらず、尚且つ文字(データ)が入っているセルを赤くする
4) ただし、3)の条件でもセル[00][56]と並んでいるデータに関してはセルを赤くしない
テーブル内には色のついていないセルで[00]単体のものもあるが、単体の場合はセルを赤くする
5) 1)の範囲に1つでも赤いセルがあればU5に×、赤いセルがない場合は〇と記載する

イメージ説明

問題のコードです↓
※5)にはまだ至っていません。

Option Explicit

Sub AAA()
    Dim i As Integer, j As Integer
    Dim C_row As Integer, C_Clm As Integer
    Dim Star As integer
    Dim Luz As integer
    Dim Cielo As integer
    Dim Flag As Boolean

    '[go 05]をチェックする
    i = 8
    j = 9

    For C_Row = 8 To 20 Step 1
        For C_Clm = 8 To 17 Step 1

        Set Star = Cells(C_Row, C_Clm)

        For Each Star In Luz
            Flg = False
            Select Case True
                Case Not Star.Interior.Color = xlNone
                Case Star.Value = "FF"
                Case Star.Value = "00" and Star.Offset(,1).Value = "56"
                Case Len(Star.Value) = 0
                Case Else: Flg = True
            End Select

            If Flag Then
                If Cielo Is Nothing Then
                    Set Cielo = Star
                 Else
                    Set Star = Union(Cielo, Star)
                End If

                If Star.Interior.ColorIndex = xlNone Then
                     Range(Cielo).Interior.Color = 22
                End If
            Next
        Next
    Next

End Sub
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

0

「Option VBASupport 1」は入れていますか?

https://ts0818.hatenablog.com/entry/2017/12/24/225311

完全互換というわけではないので、Cellsのエラーは解消するかもしれませんが、LibreOfficeだから出るエラー、は他にもあるかもしれませんよ?

あと、Excelで動かすときには、今度はこの記述が邪魔になるので、余計なトラブルを起こさないためにも使う環境と作る環境は揃えることをお勧めします。

まずは前の質問を解決することに注力して新しいことは一旦おいておくべきかと。急がば回れ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/29 09:14

    Set の使い方が間違っているのでその部分でエラーが出て正解です。
    また、Set を無くしても次の Luz の部分でエラーが出るでしょう。

    提示された解決案のプログラムの結果を聞きたいです。

    キャンセル

0

以下の回答は、LibreOfficeは使っていないのでExcelの場合は、の回答になります。

Set Star = Cells(C_Row, C_Clm)

Setはオブジェクトを代入する際に使うものです。
CellsRangeオブジェクトを返しますが、受け取り側のStarintegerで定義されているので誤りです。
またRangeで定義したとしてもCellsは1セル分しか返さないので、そのあとのFor Eachの意味がありません。
というかFor Eachで使ってるLuzってどこから出てきたのでしょうか。
For EachはこのLuzについて回るので値をセットしないといけません。

とりあえずざっと見て気づいたところです。
参考まで。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • VBA

    1906questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1638questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • マクロ

    238questions

    定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。