![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
#1
マクロを使うとセキュリティ警告が出てしまうので、使いたくないのです。。。
---使いたくない意味が分かりません。
セキュリティレベルを下げるのも少し不安に感じています。
---何が不安なのかが分かりません。
マクロでしか制御できませんよ。
もし、小文字を大文字にしたいだけなら、
別セルに入力し、表示したいセルに
UPPER関数で大文字にしたら如何ですか。
(アルファベットの問題だけですよね?)
A1に大文字で表示したい場合
で、入力をZ1にするとき
A1に =upper(z1) と入力し、
A1には、CapsLock offで入力
No.4
- 回答日時:
>やはりマクロを使うしかないのでしょうか?
>できればマクロを使いたくないので。。。
>マクロを使うとセキュリティ警告が出てしまうので、使いたくないのです。。。セキュリティレベルを下げるのも少し不安に感じています。
私の知る範囲では、VBAを使う以外には、方法はないと思います。
Officeのバージョンがいくつかは分かりませんが、「セキュリティの警告」が出る出ないというのは、あまり意味がないと思います。そのVBAが問題を起こすか起こさないかは、本来は、そのコードの内容の問題で、「警告」が出たから、問題だということではありません。それに、ダイヤログを出さない方法もいくつか用意されています。一応、セキュリティ「中」で出さないレベルに収めるなら、「個人認証」という方法があります。
悪意のあるコードなのか、そうでないのかは、VBAがある程度読める人でなければ分かりません。悪意のないコードでも、問題が発生することがあります。Officeで、VBAを使わなくて済むなら、それに越したことはありません。Officeのバージョンやその注意書きを確認し、作者不明のVBAに手を出さなければ、ふつうは問題ないはずなのです。もし、心配ならアンチウィルスで、Officeをプロテクトするのが良いのであって、「セキュリティの警告」は、単なるマクロ付きだという「警告」であって、それは何の阻止にもなりません。それに、プログラムに詳しい人が、その気になれば、そのような警告を出さないようにすることは、簡単なことだからです。
VBAをもう少し勉強なさってください。
アドバイスありがとうございます。
私自身マクロについては初心者なものですから、このような質問が出てきたのかもしれません。
もう少し勉強します。。。
No.3
- 回答日時:
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
No.2
- 回答日時:
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はオンのままですよ。
No.1
- 回答日時:
マクロでCapsLock、NumLockキーの切り替える方法
http://www.keep-on.com/excelyou/2003lng4/200310/ …
これが参考になりませんか
参考URL:http://www.keep-on.com/excelyou/2003lng4/200310/ …
ありがとうございます。
マクロを使うとセキュリティ警告が出てしまうので、使いたくないのです。。。セキュリティレベルを下げるのも少し不安に感じています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) セルに入力した小文字アルファベット、数字を大文字表示させるには? 3 2022/07/13 10:01
- Visual Basic(VBA) VBAマクロでシートコピーした新シートにコピー元シートとの計算式の入れ方を教えて下さい。 5 2022/11/20 09:48
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- その他(Microsoft Office) エクセルの休日について教えてください。 1 2023/01/06 15:45
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) エクセルのフッタやヘッダーについて 3 2023/02/04 09:45
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エクセルで英数大文字のみの入力制限は可能ですか
Excel(エクセル)
-
エクセルVBAでNumLockキーの状態を確認する
Excel(エクセル)
-
EXCELで大文字入力
Excel(エクセル)
-
-
4
テキストボックスに大文字を
Visual Basic(VBA)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
7
エクセルVBAでmeに相当するものは?
Excel(エクセル)
-
8
Excel VBA ワークシートに貼られたボタン名(Caption)をセルの値から取得するには
その他(プログラミング・Web制作)
-
9
CapsLock送信 キーストローク
Visual Basic(VBA)
-
10
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
11
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DATE関数で現在の年齢を出した...
-
エクセルでCtrl+Tでテーブルの...
-
REGEXREPLACE関数について、
-
エクセルのクイックアクセスツ...
-
在庫管理表に使うエクセルの関...
-
職場の人から聞かれており、こ...
-
下記マクロでMsgBox "空白です...
-
Excel関数-文字列で自動作成さ...
-
エクセルでバーコード作成し使...
-
【マクロ】for next構文について
-
ユーザー定義関数をアドイン登...
-
エクセルの関数について教えて...
-
エクセルで表
-
PDFの請求明細をエクセルにしたい
-
Excelデータをコピペして、ペー...
-
スプレッドシート、Excelでの数...
-
エクセルで特定の範囲内から小...
-
Excelで50個のセルに同じ文字を...
-
エクセルで会社の従業員のデー...
-
【マクロ】関数をセルに入力す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報