[[20071112094924]] 『範囲を指定してマクロを実行したい』(mo-.-mo) ページの最後に飛ぶ

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

 

 『範囲を指定してマクロを実行したい』(mo-.-mo)
 セルで範囲を確定した後、線色の一括変更したいのですが、
 過去の質問を参考にシート内の線色の一括変更までは出来ましたが、
 範囲指定が出来ません、 調べていろいろ試しましたが・・・トホホ(基本が解ってないもので)
 お教え頂けませんでしょうか。

 Sub 緑色に一括変換()
 Dim r As Range

    For Each r In ActiveSheet.UsedRange
    With r
        If .Borders(xlEdgeLeft).LineStyle <> xlLineStyleNone Then
            .Borders(xlEdgeLeft).ColorIndex = 4
        End If

        If .Borders(xlEdgeTop).LineStyle <> xlLineStyleNone Then
            .Borders(xlEdgeTop).ColorIndex = 4
        End If

        If .Borders(xlEdgeBottom).LineStyle <> xlLineStyleNone Then
            .Borders(xlEdgeBottom).ColorIndex = 4
        End If

        If .Borders(xlEdgeRight).LineStyle <> xlLineStyleNone Then
            .Borders(xlEdgeRight).ColorIndex = 4
        End If

    End With
    Next r
 End Sub

 >ActiveSheet.UsedRange
 「アクティブシートの使用セル範囲」です。
 この部分を指定したいセル範囲に置き換えます。
 (MARBIN)

 MARBINさん申し訳ありません、ど素人なので? 
 セルで範囲を指定した後マクロ実行させたいのですが、出来ますでしょうか。
 (mo-.-mo) 

 セル範囲を指定するにはいくつか方法があります。

 直接選択する
 If TypeName(Selection) = "Range" Then
    MsgBox Selection.Address
 Else
    MsgBox "セルを選択してから実行してください。"
 End If

 InputBoxで指定する

 Dim rng As Range
  Set rng = Application.InputBox(prompt:=セル範囲を選択してください, Title:=セル指定, Type:=8)
  MsgBox rng.Address

 RefEditコントロールで指定する
 (MARBIN)

 MARBINさんがくわしく説明されているので試してみるのがよいと
 思いますが、一応、「セル範囲を選択してから」マクロを実行と
 いうことであれば、For Each r In Selection  でよさそうです。
(純丸)(o^-')b

 MARBINさん 純丸さん 有り難うございます
 新しいシートで試すとOKなのですが、
 書き換えたい作成してあるシートで実行すると下記の表示が出ます、何が原因なのでしょうか?

 border クラスの colorndex プロパティを設定出来ませんと出ます

 Sub 緑色に一括変換()
 Dim r As Range
 For Each r In Selection  

 With r
 If .Borders(xlEdgeLeft).LineStyle <> xlLineStyleNone Then
            .Borders(xlEdgeLeft).ColorIndex = 4
        End If

        If .Borders(xlEdgeTop).LineStyle <> xlLineStyleNone Then
            .Borders(xlEdgeTop).ColorIndex = 4
        End If

        If .Borders(xlEdgeBottom).LineStyle <> xlLineStyleNone Then
            .Borders(xlEdgeBottom).ColorIndex = 4
        End If

        If .Borders(xlEdgeRight).LineStyle <> xlLineStyleNone Then
            .Borders(xlEdgeRight).ColorIndex = 4
        End If

    End With
    Next r
 End Sub


 シートを保護していませんか?
 (MARBIN)

 シートに保護がしてあります、ロックがかかている為解除出来ませんでした。
 他の時に使用します、 皆様 有り難うございました。(mo-.-mo)


 コードから保護解除、再保護、としては?

 Activesheet.Unprotect
 '処理
 Activesheet.Protect
 (MARBIN)

 MARBINさん有り難うございます。
 マクロで途中までは色が変わるのですが、 
 (実行時エラーで'1004' border クラスの colorndex プロパティを設定出来ません) になります、
 その後マクロではなく、線色を一つずつ変えてみると 
(セルの書式が多すぎるため書式を追加できません) とメッセージが出ました、
 この所が問題なのかとも思います、いろいろ有り難うございました。
 (mo-.-mo)

コメント返信:

[ 一覧(最新更新順) ]


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