プロが教える店舗&オフィスのセキュリティ対策術

EXCELのシートで特定のシートだけ、セルだけCapsLockをオンにするということはできますか?
それ以外のセルやシートなどではCapsLockをオフにするということはできますか?

A 回答 (5件)

#1



マクロを使うとセキュリティ警告が出てしまうので、使いたくないのです。。。
---使いたくない意味が分かりません。


セキュリティレベルを下げるのも少し不安に感じています。
---何が不安なのかが分かりません。

マクロでしか制御できませんよ。





もし、小文字を大文字にしたいだけなら、
別セルに入力し、表示したいセルに
UPPER関数で大文字にしたら如何ですか。
(アルファベットの問題だけですよね?)
A1に大文字で表示したい場合
で、入力をZ1にするとき
A1に =upper(z1) と入力し、
A1には、CapsLock offで入力
    • good
    • 0
この回答へのお礼

たびたびありがとうございます。
マクロをもう少し勉強しないとダメなようですね。
初心者には無理な課題だったようです。

お礼日時:2005/04/25 21:21

>やはりマクロを使うしかないのでしょうか?


>できればマクロを使いたくないので。。。

>マクロを使うとセキュリティ警告が出てしまうので、使いたくないのです。。。セキュリティレベルを下げるのも少し不安に感じています。

私の知る範囲では、VBAを使う以外には、方法はないと思います。

Officeのバージョンがいくつかは分かりませんが、「セキュリティの警告」が出る出ないというのは、あまり意味がないと思います。そのVBAが問題を起こすか起こさないかは、本来は、そのコードの内容の問題で、「警告」が出たから、問題だということではありません。それに、ダイヤログを出さない方法もいくつか用意されています。一応、セキュリティ「中」で出さないレベルに収めるなら、「個人認証」という方法があります。

悪意のあるコードなのか、そうでないのかは、VBAがある程度読める人でなければ分かりません。悪意のないコードでも、問題が発生することがあります。Officeで、VBAを使わなくて済むなら、それに越したことはありません。Officeのバージョンやその注意書きを確認し、作者不明のVBAに手を出さなければ、ふつうは問題ないはずなのです。もし、心配ならアンチウィルスで、Officeをプロテクトするのが良いのであって、「セキュリティの警告」は、単なるマクロ付きだという「警告」であって、それは何の阻止にもなりません。それに、プログラムに詳しい人が、その気になれば、そのような警告を出さないようにすることは、簡単なことだからです。

VBAをもう少し勉強なさってください。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
私自身マクロについては初心者なものですから、このような質問が出てきたのかもしれません。
もう少し勉強します。。。

お礼日時:2005/04/25 21:18

API関数は、間違って使うと、ハングしますので、注意してお使いください。


これは、シートモジュールに設置してください。

参考: http://support.microsoft.com/kb/177674/ja

'Declare Type for Calling API
Private Type OSVERSIONINFO
  dwOSVersionInfoSize As Long
  dwMajorVersion As Long
  dwMinorVersion As Long
  dwBuildNumber As Long
  dwPlatformId As Long
  szCSDVersion As String * 128
End Type
  'Win32 API Declare
  Private Declare Function GetVersionEx Lib "kernel32" _
      Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
  Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
      ByVal bScan As Byte, _
      ByVal dwFlags As Long, _
      ByVal dwExtraInfo As Long)
  Private Declare Function GetKeyboardState Lib "user32" _
      (pbKeyState As Byte) As Long
  Private Declare Function SetKeyboardState Lib "user32" _
      (lppbKeyState As Byte) As Long
  'Constant
  Const VK_NUMLOCK = &H90
  Const VK_SCROLL = &H91
  Const VK_CAPITAL = &H14
  Const KEYEVENTF_EXTENDEDKEY = &H1
  Const KEYEVENTF_KEYUP = &H2
  Const VER_PLATFORM_WIN32_NT = 2
  Const VER_PLATFORM_WIN32_WINDOWS = 1

Private Sub Worksheet_Activate()
 Dim OSVersion As OSVERSIONINFO
 Dim CapsLockState As Boolean
 OSVersion.dwOSVersionInfoSize = Len(OSVersion)
 GetVersionEx OSVersion
 Dim keys(0 To 255) As Byte
 GetKeyboardState keys(0)
 CapsLockState = keys(VK_CAPITAL)
'シートアクティベート
 'CapsLock: Off to On
 If CapsLockState <> True Then
  'Win95/98
  If OSVersion.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
   keys(VK_CAPITAL) = 1
   SetKeyboardState keys(0)
  'WinNT
  ElseIf OSVersion.dwPlatformId = VER_PLATFORM_WIN32_NT Then
   'Simulate Key Press
   keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or _
     0, 0
   'Simulate Key Release
   keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or _
     KEYEVENTF_KEYUP, 0
  End If
 End If
End Sub
Private Sub Worksheet_Deactivate()
 Dim OSVersion As OSVERSIONINFO
 Dim CapsLockState As Boolean
 OSVersion.dwOSVersionInfoSize = Len(OSVersion)
 GetVersionEx OSVersion
 Dim keys(0 To 255) As Byte
 GetKeyboardState keys(0)
 CapsLockState = keys(VK_CAPITAL)
 'シート・ディアクティベート
 'CapsLock: On to Off
 If CapsLockState Then
  'Win95/98
  If OSVersion.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
   keys(VK_CAPITAL) = 0
   SetKeyboardState keys(0)
   'WinNT
  ElseIf OSVersion.dwPlatformId = VER_PLATFORM_WIN32_NT Then
  'Simulate Key Press
   keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
  'Simulate Key Release
   keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY _
     Or KEYEVENTF_KEYUP, 0
  End If
 End If
End Sub

参考URL:http://support.microsoft.com/kb/177674/ja
    • good
    • 0
この回答へのお礼

ありがとうございます
参考にさせていただきます。

お礼日時:2005/04/24 17:56

Excelのマクロは使えますでしょうか?


以下の方法をお試しください。

1) 目的のブックを開きます。
2) Alt + F11キーを押して、Microsoft Visual Basicを開きます。
3) 開いたMicrosoft Visual Basicの左側、「プロジェクト-VBAProject」に
  シート名が何かエクスプローラーのようになっていると思いますが、
  その中の目的のシート名が書かれている部分をダブルクリックします。
  右側が灰色から白くなり、文字を入力することができるようになります。
4) 目的に応じて、下のA)、B)いずれかをコピーして貼り付けてください。

A) 特定のシートだけCapsLockをオンしたい場合
'ここから--------------------------------------------------------------------------
Private Declare Function GetKeyboardState Lib "User32" (pbKeyState As Byte) As Long
Private Keys(0 To 255) As Byte

Private Sub Worksheet_Activate()
  GetKeyboardState Keys(0)
  If CBool(Keys(&H14)) = False Then
    SendKeys "+{CAPSLOCK}"
    Application.SendKeys "+{CAPSLOCK}"
  End If
End Sub

Private Sub Worksheet_Deactivate()
  GetKeyboardState Keys(0)
  If CBool(Keys(&H14)) = True Then
    SendKeys "+{CAPSLOCK}"
    Application.SendKeys "+{CAPSLOCK}"
  End If
End Sub
'ここまで--------------------------------------------------------------------------

B) 特定のセルだけCapsLockをオンしたい場合(下の例ではセルA1になっています)
'ここから--------------------------------------------------------------------------
Private Declare Function GetKeyboardState Lib "User32" (pbKeyState As Byte) As Long
Private Keys(0 To 255) As Byte

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim FCaps As Boolean
  FCaps = True
'下の行にCapsLockをしたいセルA1が指定されています。
'変更したい時は、絶対参照($付き)で、かつ列名は大文字で指定します。
  If Target.Address = "$A$1" Then FCaps = False
  GetKeyboardState Keys(0)
  If CBool(Keys(&H14)) = FCaps Then
    SendKeys "+{CAPSLOCK}"
    Application.SendKeys "+{CAPSLOCK}"
  End If
End Sub
'ここまで--------------------------------------------------------------------------

5) Microsoft Visual Basicを終了します。

なおソース中にも書いてありますが、Bの例で別のセルを指定したい場合は、
絶対参照かつ大文字で書いてください。例えばセルB10を指定したい場合は、
  If Target.Address = "$B$10"
とします。
複数のセルを指定したい場合は、上の行を必要なだけ追記してください。
  If Target.Address = "$A$1" Then FCaps = False
  If Target.Address = "$B$10" Then FCaps = False
  If Target.Address = "$C$3" Then FCaps = False
と3行続けて書けば、A1とB10とC3にマウスを合わせた時にCapsLockがオンします。
当然A1に合わせてからB10に合わせ直してもCapsLockはオンのままですよ。
    • good
    • 1
この回答へのお礼

ありがとうございます。
やはりマクロを使うしかないのでしょうか?
できればマクロを使いたくないので。。。

お礼日時:2005/04/24 17:55

マクロでCapsLock、NumLockキーの切り替える方法


http://www.keep-on.com/excelyou/2003lng4/200310/ …

これが参考になりませんか

参考URL:http://www.keep-on.com/excelyou/2003lng4/200310/ …
    • good
    • 0
この回答へのお礼

ありがとうございます。
マクロを使うとセキュリティ警告が出てしまうので、使いたくないのです。。。セキュリティレベルを下げるのも少し不安に感じています。

お礼日時:2005/04/24 17:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています