Excel VBA質問箱 IV

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

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


140 / 3841 ページ ←次へ | 前へ→

【79681】CustomViewsを繰り返してカラー印刷を行...
質問  nck  - 18/3/6(火) 19:04 -

引用なし
パスワード
   多数のシートで一度にカラー印刷をしたく、Customviewsの利用を検討しています。

各シートごとにユーザー設定のビューを登録し、名前を(1,2,3...)とつけていきます。

その後、CustomViewsの引数でForの繰り返し処理を行うことで、印刷できるのではないかと考えやってみましたが、引数が不正とのエラーが出て実行できませんでした。

引数として繰り返すiの型はInteger,Long,CustomViewなど試してみましたがどれもエラーとなります。

どなたかうまいやり方をご存知の方はご連絡ください。
・ツリー全体表示

【79680】Re:オプションボタンによるテキストボッ...
質問  ボタン  - 18/3/6(火) 9:47 -

引用なし
パスワード
   ▼マナ さん:

最初は以下にしてました。

Private Sub OptionButton1_Click()

If OptionButton1.Value = True Then

Label1.Visible = True
TextBox1.Visible = True

Else
Label1.Visible = False
TextBox2.Visible = False

End If

End Sub

※OptionButton2にはこれの2バージョンとしています。


マナさんからのVBAを見て以下に変更しました。

Option Explicit

Private Sub 表示切替()
  Dim i As Long
 
   For i = 1 To 5
    Controls("Textbox" & i).Visible = Controls("OptionButton" & i).Value
  Next
 
End Sub

Private Sub OptionButton1_Click()

If OptionButton1.Value = True Then

Label1.Visible = True
TextBox1.Visible = True

Else
Label1.Visible = False
TextBox1.Visible = False

End If

End Sub


Private Sub OptionButton2_Click()

If OptionButton2.Value = True Then

Label2.Visible = True
TextBox2.Visible = True

Else
Label2.Visible = False
TextBox2.Visible = False


仮にLabel1〜5と TextBox1〜5を作って
実行してみましたが、非表示から表示はされますが
ボタンを選び直しても、非表示にはなりませんでした。


TextBoxなどを使い分ける必要性ですが
考え方がおかしかったら申し訳ありません。
たとえばですが

ボタン1は社内の人間で
Label1は部署名
TextBox1は部署名
Label2は社員番号
TextBox2は社員番号
Label3は名前
TextBox3は名前となっています。

ボタン2は社外の人間で
Label4会社名
TextBox4は会社名
Label5役職名
TextBox5は役職名
Label3は名前
TextBox3は名前
となっており、名前であるLabel3とTextBox3は共通で使用できるという感じです。

エクセルにそれぞれを書き込ませるつもりですが
名前は同じ列にしますが項目が違うものは列も異なります。

対象者(ボタン)によって入力したい項目(ラベルとテキストボックス)が違うので分けたいんです。

なにせVisibleとEnabledもわかっていないので
Captionを変更でできるとかはよくわかりません。


▼マナ さん:
>▼ボタン さん:
>
>>OptionButton2を選ぶと
>>Label2とTextBox2は表示はされますが
>>Label1とTextBox1は非表示になってくれません。
>>(追加で表示されていく)
>
>どんなコードで試しましたか?
>
>
>>実は本当のユーザフォームは
>>OptionButton1に対して
>>Label1、Label3、Label12
>>TextBox3、TextBox9、TextBox15
>>
>>OptionButton2に対して
>>Label1、Label5、Label15
>>TextBox4、TextBox9、TextBox15
>>となっています。
>>
>
>TextBox3とTextBox4を使い分ける必要があるのですか。
>どちらも、TextBox3を使うのでは、なぜだめなのですか。
>
>Labelについても、Captionを変更するだけではだめなのですか。
・ツリー全体表示

【79679】Re:オプションボタンによるテキストボッ...
発言  マナ  - 18/3/5(月) 23:31 -

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

>OptionButton2を選ぶと
>Label2とTextBox2は表示はされますが
>Label1とTextBox1は非表示になってくれません。
>(追加で表示されていく)

どんなコードで試しましたか?


>実は本当のユーザフォームは
>OptionButton1に対して
>Label1、Label3、Label12
>TextBox3、TextBox9、TextBox15
>
>OptionButton2に対して
>Label1、Label5、Label15
>TextBox4、TextBox9、TextBox15
>となっています。
>

TextBox3とTextBox4を使い分ける必要があるのですか。
どちらも、TextBox3を使うのでは、なぜだめなのですか。

Labelについても、Captionを変更するだけではだめなのですか。
・ツリー全体表示

【79678】Re:オプションボタンによるテキストボッ...
質問  ボタン  - 18/3/5(月) 14:00 -

引用なし
パスワード
   ▼マナ さん:
いろいろありがとうございます。

現在、ユーザフォーム起動した状態では
Label1〜5  TextBox1〜5
は非表示になっています。


書いていただいたVBAを利用してみましたが
OptionButton1を選ぶと
Label1とTextBox1が表示されます。

OptionButton2を選ぶと
Label2とTextBox2は表示はされますが
Label1とTextBox1は非表示になってくれません。
(追加で表示されていく)


>考えてみると、TextBoxを5個も用意せず、
>1個ですべてをまかなえば

実は本当のユーザフォームは
OptionButton1に対して
Label1、Label3、Label12
TextBox3、TextBox9、TextBox15

OptionButton2に対して
Label1、Label5、Label15
TextBox4、TextBox9、TextBox15
となっています。

オプションボタンの切り替えのヒントがいただけたら
と思い詳しく書いておらず申し訳ありません。

>▼ボタン さん:
>
>考えてみると、TextBoxを5個も用意せず、
>1個ですべてをまかなえば、
>表示切り替えも不要になりませんか。
・ツリー全体表示

【79677】Re:オプションボタンによるテキストボッ...
発言  マナ  - 18/3/3(土) 18:33 -

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

考えてみると、TextBoxを5個も用意せず、
1個ですべてをまかなえば、
表示切り替えも不要になりませんか。
・ツリー全体表示

【79676】Re:作業数の追加と画像サイズのセル合わせ
お礼  hitosi  - 18/3/3(土) 9:03 -

引用なし
パスワード
   返信ありがとうございます。

少しづつ理解して、仕上げていこうと思います。

ありがとうございました。
・ツリー全体表示

【79675】Re:色つきを立て棒表示にしたい
発言  γ  - 18/3/3(土) 8:58 -

引用なし
パスワード
   マクロ記録の結果と、それへの貴兄の受け止め(感想、考察)を説明ください。
そうしたことを質問に先立ってするものだと思いますが。
・ツリー全体表示

【79674】Re:オプションボタンによるテキストボッ...
発言  マナ  - 18/3/2(金) 23:38 -

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

>修正したら確かに完全に消えました!

>ただまだ切り替えはできてない状態です。

なぜ?
非表示にできるなら再表示もできませんか。

Option Explicit

Private Sub 表示切替()
  Dim i As Long
  
  For i = 1 To 5
    Controls("Textbox" & i).Visible = Controls("OptionButton" & i).Value
  Next
  
End Sub

Private Sub OptionButton1_Click()
  表示切替
End Sub

Private Sub OptionButton2_Click()
  表示切替
End Sub
・ツリー全体表示

【79673】Re:色つきを立て棒表示にしたい
質問  トキノハジメ  - 18/3/2(金) 23:19 -

引用なし
パスワード
   ▼γ さん:
>返事がないけど、立て棒表示ってなんですか?
>それは色よりも目立つんですか?(目立たないようにしたいのかな)

返事遅くなってすみません。数字の書かれたセルの右側だけ太い線を引き、上下左の線は細い線と考えているのですが。わかりにくい説明ですみません。宜しくお願い致します。
・ツリー全体表示

【79671】Re:色つきを立て棒表示にしたい
発言  γ  - 18/3/2(金) 22:02 -

引用なし
パスワード
   返事がないけど、立て棒表示ってなんですか?
それは色よりも目立つんですか?(目立たないようにしたいのかな)
・ツリー全体表示

【79670】Re:作業数の追加と画像サイズのセル合わせ
回答  γ  - 18/3/2(金) 21:59 -

引用なし
パスワード
   1.については、セルのtop,Left,Width,Heightを元に画像のそれを調整。

2.については、、

  プロシージャの頭で念のため以下を追加。
  If Target.Count > 1 Then Exit Sub

  配列を定義したあとで、例えば
  Dim m As Variant
  Dim adr As String
  
  adr = Target.Address(False, False)
  m = Application.Match(adr, 型式, 0)
  If IsError(m) Then Exit Sub     '該当セル以外を変更
  などとして、何番目の要素であるか(index)を m とし、
  既存の処理を、型式(m) 型式出力先(m) などに変更すればよいのでは?
・ツリー全体表示

【79669】Re:【解決】実行時エラー1004-Activeメソ...
発言  亀マスター  - 18/3/2(金) 19:44 -

引用なし
パスワード
   解決して良かったですね。
もし、保護状態で続けなくてはいけないようでしたら、上手くいかなかったというところのコードを以下のように書き換えてみてください(前回の私の回答は説明不足でしたね)。

Workbooks(Application.ProtectedViewWindows(1).Workbook.FullName).Activate
・ツリー全体表示

【79668】作業数の追加と画像サイズのセル合わせ
質問  hitosi E-MAIL  - 18/3/2(金) 13:12 -

引用なし
パスワード
   エクセルVBE初心者です。
わからないことがあり困っている為、質問させて頂きます。

下記のプログラムは作成途中の物になります。

現状の状態だとC3のセルに入力した文字を、「画像フォルダ」というフォルダから検索して
.bmpファイルを、別のWorksheets("ジャンル名、種別")のC22のセルに、張り付ける
C3の入力に何もない、もしくはC3に入力した文字のファイルが「画像フォルダ」になければ
「指定したファイルがありません」とメッセージを出力するという状態までは出来ているのですが
そこからさらにもう少しアレンジを加えたく困っています。

内容としては2つあります。

1.張り付ける画像のサイズをセルのサイズと同じにする。(画像の比率はいじっても構わない)

2.入力先と貼り付け先を複数個作りたい
  
 現状2.に関しては入力先とそれを出力する先は
 頭で宣言しているのですが、現状の形からどのように変えていけばよいのか
 わからない為、困っています。

どなたか分かる方がいれば、ご教授お願いします。


Private Sub Worksheet_Change(ByVal Target As Range)  'ワークシート内の何処のセルを変更しても自動的に実行する。という意味
Dim 型式(1 To 18) As String      '型式(1)〜型式(18)という代入先を作成
  型式(1) = "C3" '代入先を使用するセルを指定
  型式(2) = "C4" '代入先を使用するセルを指定
  型式(3) = "C5" '代入先を使用するセルを指定
  型式(4) = "C6" '代入先を使用するセルを指定
  型式(5) = "C7" '代入先を使用するセルを指定
  型式(6) = "C8" '代入先を使用するセルを指定
  型式(7) = "C9" '代入先を使用するセルを指定
  型式(8) = "C10" '代入先を使用するセルを指定
  型式(9) = "C11" '代入先を使用するセルを指定
  型式(10) = "C12" '代入先を使用するセルを指定
  型式(11) = "C13" '代入先を使用するセルを指定
  型式(12) = "C14" '代入先を使用するセルを指定
  型式(13) = "C15" '代入先を使用するセルを指定
  型式(14) = "C16" '代入先を使用するセルを指定
  型式(15) = "C17" '代入先を使用するセルを指定
  型式(16) = "C18" '代入先を使用するセルを指定
  型式(17) = "C19" '代入先を使用するセルを指定
  型式(18) = "C20" '代入先を使用するセルを指定
 
 
Dim 型式出力先(1 To 18) As String   '型式出力先(1)〜型式出力先(8)という代入先を作成
  型式出力先(1) = "C22" '画像挿入先のセル
  型式出力先(2) = "AS22" '画像挿入先のセル
  型式出力先(3) = "C81" '画像挿入先のセル
  型式出力先(4) = "AS81" '画像挿入先のセル
  型式出力先(5) = "C140" '画像挿入先のセル
  型式出力先(6) = "AS140" '画像挿入先のセル
  型式出力先(7) = "C199" '画像挿入先のセル
  型式出力先(8) = "AS199" '画像挿入先のセル
  型式出力先(9) = "C258" '画像挿入先のセル
  型式出力先(10) = "AS258" '画像挿入先のセル
  型式出力先(11) = "C317" '画像挿入先のセル
  型式出力先(12) = "AS317" '画像挿入先のセル
  型式出力先(13) = "CI22" '画像挿入先のセル
  型式出力先(14) = "DY22" '画像挿入先のセル
  型式出力先(15) = "CI81" '画像挿入先のセル
  型式出力先(16) = "DY22" '画像挿入先のセル
  型式出力先(17) = "CI140" '画像挿入先のセル
  型式出力先(18) = "DY140" '画像挿入先のセル

Const path As String = "C:\画像フォルダ/" 'ファイルの格納フォルダ
Const pic As String = ".bmp"  '「.(半角)」+ファイルの拡張子"
Dim shp As Shape
Dim buf As String
  If Target.Address(0, 0) = 型式(1) Then
    For Each shp In Worksheets("ジャンル名、種別").Shapes '既に表示されている画像を削除する処理(Worksheet変更版)
       If Not Intersect(Worksheets("ジャンル名、種別").Range(型式出力先(1)), Worksheets("ジャンル名、種別").Range(shp.TopLeftCell, _
            shp.BottomRightCell)) Is Nothing Then '既に表示されている画像を削除する処理 (Worksheet変更版)
        shp.Delete
      End If
    Next
    Range(型式出力先(1)).Select
    buf = Dir(path & Target.Value & pic)
    If buf <> "" Then '入力したファイル名があるかチェック
      Worksheets("ジャンル名、種別").Pictures.Insert (path & Target.Value & pic)
    Else
      MsgBox "指定したファイルがありません"
    End If
  End If
  Target.Offset(1, 0).Select
End Sub
・ツリー全体表示

【79667】Re:オプションボタンによるテキストボッ...
お礼  ボタン  - 18/3/2(金) 12:09 -

引用なし
パスワード
   ▼マナ さん:
非表示はVisibleなんですね。
修正したら確かに完全に消えました!
ありがとうございます。

ただまだ切り替えはできてない状態です。


>▼ボタン さん:
>
>>ちなみに非表示は文字が薄くなるだけで
>>見えなくなるのとは違うんですね。
>>完全に消えたようにすることはできないでしょうか?
>
>
>非表示は、Enabled でなく、Visible です。
・ツリー全体表示

【79666】【解決】実行時エラー1004-Activeメソッ...
お礼  ひなまつり  - 18/3/2(金) 11:38 -

引用なし
パスワード
   亀マスターさん、こんにちは。

『インタネットから取得したファイルに対して保護されたビューを
 有効にする』のチェックを外しても良いと許可を得ることが出来ました。
よって、本件は解決ということにさせていただきます。

ありがとうございました。
・ツリー全体表示

【79665】Re:実行時エラー1004-Activeメソッドが失...
質問  ひなまつり  - 18/3/2(金) 10:14 -

引用なし
パスワード
   亀マスターさん
おはようございます。回答をいただき、ありがとうございました。

ご指摘の通りファイルはネットワーク上にあります。
『インタネットから取得したファイルに対して保護されたビューを
 有効にする』のチェックを外したいところですが、セキュリティに
対して非常に厳しい会社のため、保護ビューの状態で使わざるを得ません。

ご教授いただいたコードを入れてみましたが、エラーが出ました。
お手数ですが、ご確認をお願いいたします。


Private Sub Workbook_Open()
 

Dim 開始日 As String
Dim 終了日 As String

Application.ProtectedViewWindows(1).Workbook←ご教授いただいたコード 

開始日 = Format(Worksheets("ABC").Range("F3"), "yyyy/mm/dd")
終了日 = Format(Worksheets("ABC").Range("G3"), "yyyy/mm/dd")

Worksheets("ABC").Activate

Worksheets("ABC").Range("A5:M10000").AutoFilter Field:=4, _
Criteria1:=">=" & 開始日, _
Operator:=xlAnd, _
Criteria2:="<=" & 終了日

Worksheets("ABC").Activate
   Worksheets("ABC").Range("A5:M10000") _
       .Sort Key1:=Range("D5"), order1:=xlAscending, _
          Key2:=Range("F5"), order2:=xlAscending, _
          Key3:=Range("B5"), order3:=xlAscending


開始日 = Format(Worksheets("XYZ").Range("F3"), "yyyy/mm/dd")
終了日 = Format(Worksheets("XYZ").Range("G3"), "yyyy/mm/dd")


Worksheets("XYZ").Activate

Worksheets("XYZ").Range("A5:M10000").AutoFilter Field:=4, _
Criteria1:=">=" & 開始日, _
Operator:=xlAnd, _
Criteria2:="<=" & 終了日

   Worksheets("XYZ").Range("A5:M10000") _
       .Sort Key1:=Range("D5"), order1:=xlAscending, _
          Key2:=Range("F5"), order2:=xlAscending, _
          Key3:=Range("B5"), order3:=xlAscending
         
   
End Sub
・ツリー全体表示

【79664】Re:オプションボタンによるテキストボッ...
発言  マナ  - 18/3/1(木) 23:23 -

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

>ちなみに非表示は文字が薄くなるだけで
>見えなくなるのとは違うんですね。
>完全に消えたようにすることはできないでしょうか?


非表示は、Enabled でなく、Visible です。
・ツリー全体表示

【79663】Re:色つきを立て棒表示にしたい
発言  マナ  - 18/3/1(木) 23:17 -

引用なし
パスワード
   ▼トキノハジメ さん:
納得できたわけではありませんが
マクロなら、範囲内をループして、
1セルずつ判定して罫線を設定すればよい思います。

罫線の設定は「マクロの記録」を参考にするとよいです。
・ツリー全体表示

【79662】Re:実行時エラー1004-Activeメソッドが失...
発言  亀マスター  - 18/3/1(木) 20:07 -

引用なし
パスワード
   私もWord VBAで似たようなことになった覚えがあるのですが、どうやら、保護ビューを解除した直後にWorkbook_Openイベントが発生し、その時点では保護ビューウィンドウだけを含むコレクションに含まれた状態になっていて、通常のWorkbooksコレクションに含まれない状態になっているようです。そのせいで、普通にWorksheetsを使おうとしても、該当のシートが見つからない状態になっているのではないでしょうか。

保護ビューで開くということは、該当のファイルはインターネット上のものかネットワーク上のものでしょうか?過去にそういったところからダウンロードしてきてファイルの保護が有効になっているなら、ファイルのプロパティからブロックを解除すれば解決すると思います。

何らかの事情で、保護ビューで開くのを止められないというのであれば・・・

Application.ProtectedViewWindows(1).Workbook

で保護ビュー状態のブックを指定できますので、これを使えばなんとかなる気がします。

明日、出勤すれば私が仕事でやっていて対応したときのコードがあるはずなので、わからなければまた質問してください。
・ツリー全体表示

【79661】オプションボタンによるテキストボックス...
質問  ボタン  - 18/3/1(木) 16:51 -

引用なし
パスワード
   お世話になります。

ユーザフォーム1にオプションボタン1〜5があります。

たとえばオプションボタン1を選ぶと

Label1とTextBox1が非表示から表示に変わり
TextBoxは入力できるようにしたいです。
またオプションボタン2を選ぶと
Label1とTextBox1が非表示になり
Label2とTextBox2が表示され入力できるというのを目指してます。

最初は非表示で1を選ぶと表示に切り替わり
入力はできるのですが
別のを選んでもLabel1とTextBox1が非表示に切り替わりません。

違うのを選ぶ(1を選択していない状態)と非表示にする
というのが足りないと思うのですが…ご教授いただければ幸いです。

OptionButton1 に対してLabel1とTextBox1
OptionButton2 に対してLabel2とTextBox2…としています。
またLabelとTextBoxはすべてプロパティでEnabled = Falseに設定してあります。


Private Sub OptionButton1_Click()

If OptionButton1.Value = True Then

Label1.Enabled = True
TextBox1.Enabled = True

Else
Label1.Enabled = False
TextBox2.Enabled = False

End If

End Sub

※OptionButton2にはこれの2バージョンとしています。


ちなみに非表示は文字が薄くなるだけで
見えなくなるのとは違うんですね。
完全に消えたようにすることはできないでしょうか?
・ツリー全体表示

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