Excel VBA質問箱 IV

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

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


13513 / 13646 ツリー ←次へ | 前へ→

【4962】タイトルバー 青木 03/4/15(火) 17:08 質問
【4966】Re:タイトルバー ぴかる 03/4/15(火) 17:51 回答
【4968】Re:タイトルバー 森三中 03/4/15(火) 21:11 質問
【4970】ほんまですね。 ぴかる 03/4/16(水) 8:56 発言
【4974】Re:ほんまですね。 森三中 03/4/16(水) 10:07 発言
【4975】Re:ほんまですね。 ぴかる 03/4/16(水) 10:21 発言
【4976】Re:大変申し訳ございませんでした。 森三中 03/4/16(水) 11:08 発言
【4983】Re:大変申し訳ございませんでした。 ぴかる 03/4/16(水) 12:46 発言
【4985】Re:なにやら・・ れいぞー 03/4/16(水) 13:14 回答
【4986】まあ,凹んだりアツクなったりしないで・・・ こう 03/4/16(水) 13:19 回答
【5004】コードの訂正 m(_ _)m こう 03/4/16(水) 22:44 発言
【4993】ありがとうございました。 ぴかる 03/4/16(水) 17:25 お礼
【4999】デバッグって何? こう 03/4/16(水) 20:57 回答
【5006】Re:デバッグって何? ぴかる 03/4/17(木) 9:10 発言
【5025】ありがとうございます。 青木 03/4/17(木) 19:10 お礼
【5048】Re:ありがとうございます。 bykin 03/4/19(土) 0:05 回答
【5066】Dim xx, yy As Integerは怪しいかった? こう 03/4/20(日) 23:10 発言

【4962】タイトルバー
質問  青木  - 03/4/15(火) 17:08 -

引用なし
パスワード
   タイトルバーをなくしたいのですが・・・。
見えなくしたり、削除したり。
誰か教えてください。

【4966】Re:タイトルバー
回答  ぴかる  - 03/4/15(火) 17:51 -

引用なし
パスワード
   青木さん、こんにちは。

>タイトルバーをなくしたいのですが・・・。
>見えなくしたり、削除したり。
こんなんでOKでしょうか?。

Sub AUTO_OPEN()
  
  On Error Resume Next
  With Application
    .DisplayFullScreen = True
    .CommandBars("Full Screen").Visible = False
    .CommandBars("Worksheet Menu Bar").Enabled = False
  End With

End Sub
Sub AUTO_CLOSE()
  
  On Error Resume Next
  With Application
    .DisplayFullScreen = False
    .CommandBars("Worksheet Menu Bar").Enabled = True
  End With

End Sub

【4968】Re:タイトルバー
質問  森三中  - 03/4/15(火) 21:11 -

引用なし
パスワード
   ▼ぴかる さん:
便乗で〜す。
これだとタイトルバー付近?をダブルクリックすると
全部出てきてしまうんですけど
そういう場合はどうすればよろしいでしょうか?
よろしくお願い致します。

【4970】ほんまですね。
発言  ぴかる  - 03/4/16(水) 8:56 -

引用なし
パスワード
   森三中さん、おはようございます。

>これだとタイトルバー付近?をダブルクリックすると
>全部出てきてしまうんですけど
ほんまですね。知らんかったです。すんません。回避方法、???です。
タイトルバーは、残してツールバーを非表示じゃあきません?。

【4974】Re:ほんまですね。
発言  森三中  - 03/4/16(水) 10:07 -

引用なし
パスワード
   ▼ぴかる さん:
>ほんまですね。知らんかったです。すんません。回避方法、???です。
>タイトルバーは、残してツールバーを非表示じゃあきません?。

私はそれでかまいませんが
それだと青木さんの質問い対してはだめじゃないですか?

便乗した私がいけなかったんですね
青木さんすいません。

【4975】Re:ほんまですね。
発言  ぴかる  - 03/4/16(水) 10:21 -

引用なし
パスワード
   大人げないようですが、少しへこみました。おっしゃりたい事は、分かるんですがもう少し文面を考えて頂けるとありがたいです。私は、先生ではありません。知らない事の方が多いです。だから、ダメと言われても困ります。失礼しました。

【4976】Re:大変申し訳ございませんでした。
発言  森三中  - 03/4/16(水) 11:08 -

引用なし
パスワード
   ▼ぴかる さん:
>大人げないようですが、少しへこみました。おっしゃりたい事は、分かるんですがもう少し文面を考えて頂けるとありがたいです。私は、先生ではありません。知らない事の方が多いです。だから、ダメと言われても困ります。失礼しました。

私がだめといったのは
「青木さんの質問に適応していない」ということを言っただけです。
もともとこのスレは青木さんが立てた物であって私は便乗させていただいただけなので、
私の質問よりも青木さんの質問を優先すべきだと思います。
もう私の質問は結構ですので青木さんの質問に回答してあげてください。
どちらにしてもタイトルバーは出てきていしまうので
何か違うアプローチが必要かと思います。
ぴかるさんの気分を損ねてしまったようなので
私はもうこのスレッドには参加しませんし
今後このような不用意な発言をしないよう十分配慮致しますので
ぴかるさんに引き続き回答していただけるとありがたく思います。

最後に管理人さん、青木さん、これをご覧になってる皆さん
スレッドをめちゃくちゃにしてしまい、気分を害してしまって申し訳ありませんでした。

【4983】Re:大変申し訳ございませんでした。
発言  ぴかる  - 03/4/16(水) 12:46 -

引用なし
パスワード
   ▼森三中 さん:

こちらこそ、ご気分を損ねさせてしまったかもしれません。すんません。
本題については、やっぱり私には無理の様です。

参考までにツールバー非表示は、こんなんで出来ます。必要ないかもしれませんが・・・。

Sub ツールバー非表示()

Dim myCB As CommandBar
  
  On Error Resume Next
  For Each myCB In Application.CommandBars
    myCB.Visible = False
  Next myCB
  On Error GoTo 0
  Application.CommandBars("Worksheet Menu Bar").Enabled = False
  With Application
    .DisplayFormulaBar = False
    .DisplayStatusBar = False
  End With

End Sub
Sub ツールバー再表示()
  
  On Error Resume Next
  With Application
    .CommandBars("Worksheet Menu Bar").Enabled = True
    .CommandBars("Standard").Visible = True
    .CommandBars("Formatting").Visible = True
    .DisplayFormulaBar = True
    .DisplayStatusBar = True
  End With
  On Error GoTo 0
  
End Sub

【4985】Re:なにやら・・
回答  れいぞー WEB  - 03/4/16(水) 13:14 -

引用なし
パスワード
   こんにちは〜♪
ぴかるさんこんにちは横から失礼します♪
タイトルバーを消すのはAPIが手っ取り早いんですが
ぴかるさんの方法が安全でいいと思いますよ・・
一応サンプルです。

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
  (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
   (ByVal hWnd As Long, ByVal nIndex As Long) As Long

Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _
   ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, _
   ByVal wFlags As Long) As Long

Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Dim hWnd As Long
Dim ret As Long

Sub Test()
MsgBox "消します。"
hWnd = FindWindow("XLMAIN", Application.Caption)

  ret = GetWindowLong(hWnd, -16)
  ret = ret Xor &HC00000
  ret = SetWindowLong(hWnd, -16, ret)
  ret = SetWindowPos(hWnd, 0, 0, 0, 0, 0, &H20 Or &H4 Or &H2 Or &H1)
    
MsgBox "表示します。"
    
  ret = GetWindowLong(hWnd, -16)
  ret = ret Or &HC00000
  ret = SetWindowLong(hWnd, -16, ret)
  ret = SetWindowPos(hWnd, 0, 0, 0, 0, 0, &H20 Or &H4 Or &H2 Or &H1)
End Sub

では〜♪

【4986】まあ,凹んだりアツクなったりしないで・...
回答  こう E-MAIL  - 03/4/16(水) 13:19 -

引用なし
パスワード
   ウィンドサイズを求めて,タイトルバーサイズ分大きくし
表示位置を上にずらして「見えなく」するコードです。

Dim xx, yy As Integer
Type RECT
  x1 As Long
  y1 As Long
  x2 As Long
  y2 As Long
End Type

Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" _
      (ByVal hWnd As Long, rectangle As RECT) As Long
'---------------------------------------------------------------
Function GetScreenResolution() As String
Dim R As RECT
Dim hWnd As Long
Dim RetVal As Long
  hWnd = GetDesktopWindow()
  RetVal = GetWindowRect(hWnd, R)
  'GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
  xx = R.x2 - R.x1
  yy = R.y2 - R.y1
End Function

Sub TEST_SET()
  Call GetScreenResolution
  Debug.Print xx, yy
  With Application
    .Height = yy * 0.75 + 20
    .Width = xx * 0.75 + 0
    .Top = -20
    .Left = 0
    .CommandBars("Worksheet Menu Bar").Enabled = False
  End With
  MsgBox "ねっ!"
  With Application
    .Height = yy * 0.75 + 30
    .Width = xx * 0.75 + 0
    .Top = 0
    .Left = 0
    .CommandBars("Worksheet Menu Bar").Enabled = True
  End With
End Sub

【4993】ありがとうございました。
お礼  ぴかる  - 03/4/16(水) 17:25 -

引用なし
パスワード
   れいぞーさん、こうさん、こんにちは。

お二方様、お助けありがとうございました。
恥ずかしながら、最近こういう気分になる事が多いんですよ。

>れいぞーさん
コードは全く分かりませんが、バッチリ動作致しました。

>こうさん
TEST_SETを動作させたところ、
  .Height = yy * 0.75 + 20 でデバッグとなりました。
どっか私の使い方が悪いと思うんでうが・・・。

青木さん、森三中さん、是非ともご確認下さいネ。

【4999】デバッグって何?
回答  こう E-MAIL  - 03/4/16(水) 20:57 -

引用なし
パスワード
   >>こうさん
>TEST_SETを動作させたところ、
>  .Height = yy * 0.75 + 20 でデバッグとなりました。
デバッグってなんですか?
実行時エラーが発生したってことですか?
その時にエラーメッセージが表示されていると思いますが,
これを教えて頂かないと解決のしようがありません。
あと実行環境(OSやOfficeのバージョン)

ちなみに,
WinXP+Office2000
WinXP+Office97
Win2000+Office2000
ではエラーなしです。

【5004】コードの訂正 m(_ _)m
発言  こう E-MAIL  - 03/4/16(水) 22:44 -

引用なし
パスワード
   こうさん,バグってますよ。と自己ツッコミを入れてみたりする。

>ウィンドサイズを求めて,タイトルバーサイズ分大きくし
>表示位置を上にずらして「見えなく」するコードです。
>    .Height = yy * 0.75 + 20
>    .Width = xx * 0.75 + 0

このあと画面サイズを元に戻そうとしていますが,
>  MsgBox "ねっ!"
>  With Application

誤り   .Height = yy * 0.75 + 30
正解   .Height = yy * 0.75 + 0
             
>    .Width = xx * 0.75 + 0
>    .Top = 0
>    .Left = 0
>    .CommandBars("Worksheet Menu Bar").Enabled = True
>  End With
>End Sub

です。
(別に+0しなくてもよいけど,「加算を止める」という意味でございます)

【5006】Re:デバッグって何?
発言  ぴかる  - 03/4/17(木) 9:10 -

引用なし
パスワード
   こうさん、おはようございます。

すみません。相変わらずの意味不明の日本語で・・・。こっちの方も、もっと勉強致しますっ!。
エラーが発生の間違いです。詳しくは、以下の通りです。

Dim xx, yy As Integer
Type RECT
  x1 As Long
  y1 As Long
  x2 As Long
  y2 As Long
End Type

Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" _
      (ByVal hWnd As Long, rectangle As RECT) As Long
'---------------------------------------------------------------
Function GetScreenResolution() As String
Dim R As RECT
Dim hWnd As Long
Dim RetVal As Long
  hWnd = GetDesktopWindow()
  RetVal = GetWindowRect(hWnd, R)
  'GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
  xx = R.x2 - R.x1
  yy = R.y2 - R.y1
End Function

Sub TEST_SET()
  Call GetScreenResolution
  Debug.Print xx, yy
  With Application
    .Height = yy * 0.75 + 20  ’←この箇所でエラー発生となります。
    .Width = xx * 0.75 + 0
    .Top = -20
    .Left = 0
    .CommandBars("Worksheet Menu Bar").Enabled = False
  End With
  MsgBox "ねっ!"
  With Application
    .Height = yy * 0.75 + 30
    .Width = xx * 0.75 + 0
    .Top = 0
    .Left = 0
    .CommandBars("Worksheet Menu Bar").Enabled = True
  End With
End Sub

エラー内容は、
「実行時エラー'1004'」
 「Heightメソッドは失敗しました。:'_Applicationオブジェクト」
です。

環境は、Win2000+Office2000です。

やっぱり、私がどっかでやらかしていると思うんですけど・・・。
以上、報告でした。(^^;)

【5025】ありがとうございます。
お礼  青木  - 03/4/17(木) 19:10 -

引用なし
パスワード
   ありがとうございました。
質問の仕方が悪かったようです。
申し訳ありません。
私が質問したかったのは、
エクセルのタイトルバーを消した状態で、
ワークシートを分割表示している際の
各ワークシートのタイトルバーを使えなくする方法です。
特に、あの×を使えなくしたいのです。
お手数でなかったら、また参考にさせてください。

【5048】Re:ありがとうございます。
回答  bykin  - 03/4/19(土) 0:05 -

引用なし
パスワード
   こんばんわ。

▼青木はん
>エクセルのタイトルバーを消した状態で
ってことは、既に「全画面表示」になってるってことなんかな?
そういうことやとして・・・

>ワークシートを分割表示している際の
>各ワークシートのタイトルバーを使えなくする方法です。
>特に、あの×を使えなくしたいのです。

[ツール]-[保護]-[ブックの保護]で、ウィンドウの保護にチェックを入れれば×印は消えます。
その代わりサイズ変更もできまへんけど。
コードで書くと・・・
ActiveWorkbook.Protect Windows:=True
ってな感じ。

▼こうはん
わての環境でもぴかるはんと同じエラーになる場合がありまっせ。
それは、エクセルを最大化してるときです。
ノーマルサイズの場合はサイズ変更できるけど、最大化時はサイズ変更不可ってことです。
WindowStateのチェックが必要なんとちゃいまっか?

先頭の
>Dim xx, yy As Integer
っていうのも、この書き方やと通常は変数xxはVariant型になってまうから、
Dim xx As Integer, yy As Integer
とか、1個ずつちゃんと型宣言したほうがええと思います。

ほな。

【5066】Dim xx, yy As Integerは怪しいかった?
発言  こう E-MAIL  - 03/4/20(日) 23:10 -

引用なし
パスワード
   こうです。
#すでに過去の件でボツコードなんですが...

>それは、エクセルを最大化してるときです。
>ノーマルサイズの場合はサイズ変更できるけど、最大化時はサイズ変更不可ってことです。
>WindowStateのチェックが必要なんとちゃいまっか?
あっ,最大化してるときはテストしてませんでした。m(_ _)m
Application.WindowState = xlNormalを変更前に入れてみましょうか?

>>Dim xx, yy As Integer
>っていうのも、この書き方やと通常は変数xxはVariant型になってまうから、
それより,↑が驚きましたです。
C言語のノリ「char a,b,c;」で書いて,コンパイルエラーにならなかったので,
全然気づいていませんでした。って言うか,いつもVariantなんで・・・
ご指摘ありがとうございます。

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