Excel VBA質問箱 IV

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

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


20 / 13144 ツリー ←次へ | 前へ→

【79885】シート内にセル参照があるか調べる方法 ペーターパン 18/5/18(金) 14:20 質問[未読]

【79914】Re:シート内にセル参照があるか調べる方法 マナ 18/5/23(水) 19:12 発言[未読]
【79915】Re:シート内にセル参照があるか調べる方法 ペーターパン 18/5/23(水) 19:42 質問[未読]
【79916】Re:シート内にセル参照があるか調べる方法 マナ 18/5/23(水) 20:09 発言[未読]
【79917】Re:シート内にセル参照があるか調べる方法 ペーターパン 18/5/23(水) 21:15 質問[未読]
【79918】Re:シート内にセル参照があるか調べる方法 マナ 18/5/23(水) 22:03 発言[未読]
【79919】Re:シート内にセル参照があるか調べる方法 ペーターパン 18/5/23(水) 22:06 質問[未読]
【79920】Re:シート内にセル参照があるか調べる方法 マナ 18/5/23(水) 22:18 発言[未読]
【79921】Re:シート内にセル参照があるか調べる方法 ペーターパン 18/5/23(水) 22:20 質問[未読]
【79922】Re:シート内にセル参照があるか調べる方法 マナ 18/5/23(水) 22:25 発言[未読]
【79923】Re:シート内にセル参照があるか調べる方法 マナ 18/5/23(水) 23:06 発言[未読]

【79914】Re:シート内にセル参照があるか調べる方法
発言  マナ  - 18/5/23(水) 19:12 -

引用なし
パスワード
   ▼ペーターパン さん:

>数式入力はOKです。
>セル参照のみを禁止したいです。

質問の仕方を変えます。
1)禁止してはいけないものは何でしょうか。
2)数式を全面禁止にしてはいけないのでしょうか。
3)以下のような数式はOKにしなければいけませんか。
  =IF(A1="","",A1)

【79915】Re:シート内にセル参照があるか調べる方法
質問  ペーターパン E-MAIL  - 18/5/23(水) 19:42 -

引用なし
パスワード
   ▼マナ さん:
>▼ペーターパン さん:
>
>>数式入力はOKです。
>>セル参照のみを禁止したいです。
>
>質問の仕方を変えます。
>1)禁止してはいけないものは何でしょうか。
>2)数式を全面禁止にしてはいけないのでしょうか。
>3)以下のような数式はOKにしなければいけませんか。
>  =IF(A1="","",A1)

1)セル参照のみです
2)数式は全面オーケーです
    正確には数式ではなく、四則演算です。
3)意図がわかりませんが、セル参照はNGです

マクロを記述したエクセルを使うのはエクセルに堪能な人だけではありません。
数式を使う場合は、それが四則演算のようにそのセル単独でおさまるのであれば問題ありません。
しかし、セル参照はそれを別の人が新たに使用する、修正する場合に問題を起こします。
従ってセル参照は禁止したいのです。
セル参照がある場合にこれをメッセージで注意喚起する方法が適切です。
私の説明が拙いばかりにご迷惑をおかけしてすみません。
日本語が下手なので、、、
ご容赦下さい。

【79916】Re:シート内にセル参照があるか調べる方法
発言  マナ  - 18/5/23(水) 20:09 -

引用なし
パスワード
   ▼ペーターパン さん:

>使うのはエクセルに堪能な人だけではありません。

=A1

は、だめなのですよね。
それより簡単な(間違えるリスクの少ない)
四則演算の例を教えてください。

>それが四則演算のようにそのセル単独でおさまるのであれば問題ありません。

【79917】Re:シート内にセル参照があるか調べる方法
質問  ペーターパン E-MAIL  - 18/5/23(水) 21:15 -

引用なし
パスワード
   ▼マナ さん:
>▼ペーターパン さん:
>
>>使うのはエクセルに堪能な人だけではありません。
>
>=A1
>
>は、だめなのですよね。
>それより簡単な(間違えるリスクの少ない)
>四則演算の例を教えてください。
>
>>それが四則演算のようにそのセル単独でおさまるのであれば問題ありません。

■OK
 =1500-100*2
 =500+200-100
■NG
 =A1-100+200
 =A21-G21+100

以上でわかるでしょうか?

【79918】Re:シート内にセル参照があるか調べる方法
発言  マナ  - 18/5/23(水) 22:03 -

引用なし
パスワード
   ▼ペーターパン さん:

>■OK
> =1500-100*2
> =500+200-100
>■NG
> =A1-100+200
> =A21-G21+100
>

他のブックやシートのセル参照は考慮する必要がありますか

【79919】Re:シート内にセル参照があるか調べる方法
質問  ペーターパン E-MAIL  - 18/5/23(水) 22:06 -

引用なし
パスワード
   ▼マナ さん:
>▼ペーターパン さん:
>
>>■OK
>> =1500-100*2
>> =500+200-100
>>■NG
>> =A1-100+200
>> =A21-G21+100
>>
>
>他のブックやシートのセル参照は考慮する必要がありますか

他のブックやシートの参照はありません。

【79920】Re:シート内にセル参照があるか調べる方法
発言  マナ  - 18/5/23(水) 22:18 -

引用なし
パスワード
   ▼ペーターパン さん:

>他のブックやシートの参照はありません。

禁止しなくてもよいかという質問だったのですが…
実際の運用上、ありえないので、禁止しなくてもよいということでしょうか。

【79921】Re:シート内にセル参照があるか調べる方法
質問  ペーターパン E-MAIL  - 18/5/23(水) 22:20 -

引用なし
パスワード
   ▼マナ さん:
>▼ペーターパン さん:
>
>>他のブックやシートの参照はありません。
>
>禁止しなくてもよいかという質問だったのですが…
>実際の運用上、ありえないので、禁止しなくてもよいということでしょうか。

運用上あり得ないので禁止しなくてよいです。

【79922】Re:シート内にセル参照があるか調べる方法
発言  マナ  - 18/5/23(水) 22:25 -

引用なし
パスワード
   ▼ペーターパン さん:

試してみてください

ht tp://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim セル As Range
  Dim 参照セル As Range
  
  Application.EnableEvents = False
  For Each セル In Target
    If セル.HasFormula Then
      Set 参照セル = Nothing
      On Error Resume Next
      Set 参照セル = セル.DirectPrecedents
      On Error Resume Next
      If Not 参照セル Is Nothing Then
        MsgBox "その入力は禁止されています"
        Application.Undo
        Exit For
      End If
    End If
  Next
  Application.EnableEvents = True
  
End Sub

【79923】Re:シート内にセル参照があるか調べる方法
発言  マナ  - 18/5/23(水) 23:06 -

引用なし
パスワード
   ▼ペーターパン さん:

こめんなさい

>      Set 参照セル = Nothing

これは、不要でした。

>      On Error Resume Next
>      Set 参照セル = セル.DirectPrecedents
>      On Error Resume Next

後からの、
On Error Resume Next

On Error GoTo 0
でした。

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