Excel VBA質問箱 IV

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

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


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

【79686】Re:セルの入力
回答  りった  - 18/3/8(木) 9:48 -

引用なし
パスワード
   こんな感じですか?

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("A1")) Is Nothing Then
    If Range("A1") = "" Then
      Range("B1") = ""
    Else
        Range("B1").FormulaR1C1 = "=RC[-1]*RC[1]"
    End If
  End If
End Sub
・ツリー全体表示

【79685】稼働管理のExcel化(ブック保護等)
質問  りった  - 18/3/8(木) 9:40 -

引用なし
パスワード
   派遣業務を担当する社員の稼働管理の自動化を検討しています。
現状、作業者(客先に派遣契約で常駐)がタイムシートに時刻を記載した後、(客先の)課長に捺印してもらっています。
単純にエクセルにオートシェイプを置いて捺印の代わりとした場合、あまりにも偽造しやすいです。
よって、担当者がタイムシートに対して出来る操作を時刻入力だけに限定し(ブックの保護)、
捺印用のXLSMファイル(※1)で課長に捺印してもらおうと思います。
捺印時の時刻をvery hiddenシートに保持しておき、時刻が書き換えられたら捺印を消す考えです。

保護系のツールはほとんど作ったことが無く、勝手が分からないので、
気を付けるべきポイントが有りましたらご教示ください。
また、もっといい方法が有ればご教示ください。

※1:捺印用のXLSMファイルで捺印操作をすると、タイムシートの捺印関数が呼び出される。
  その際引数としてパスワード(保護パスワードとは別)を渡す。
  課長が捺印パスワードを意識することはない。
  捺印用ファイルは極秘とし、作業者には見せない。
・ツリー全体表示

【79684】セルの入力
質問  AAA  - 18/3/7(水) 11:16 -

引用なし
パスワード
   質問させていただきます。

A1セルに1000と入力されています。
B1セルにA1*C1と入力されています。

C1セルに40%と入力するとB1セルは、A1*C1を計算し、
C1セルが未入力なら
B1セルに入力することができるようにすることは、
可能でしょうか?

説明が下手ですいません。
宜しくお願い致します。
・ツリー全体表示

【79683】Re:オプションボタンによるテキストボッ...
発言  マナ  - 18/3/6(火) 21:15 -

引用なし
パスワード
   ▼ボタン さん:
OptionButton1の値がTrueにしたら
  Label1のCaptionを部署名に変更
  TextBox1の転記先ををC列に変更
  Label2のCaptionを社員番号に変更
  TextBox2の転記先ををD列に変更

OptionButton2の値がTrueにしたら
  Label1のCaptionを会社名に変更
  TextBox1の転記先ををE列に変更
  Label2のCaptionを役職名に変更
  TextBox2の転記先ををF列に変更

のようにできないかと考えています。

また場合によっては、TextBoxのかわりに、
ComboBoxを使うのも便利かもしれません。
・ツリー全体表示

【79682】Re:CustomViewsを繰り返してカラー印刷を...
発言  マナ  - 18/3/6(火) 20:53 -

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

わたしは使ったことありませんが
検索してみました。

ht tp://excelwork.info/excel/bookcustomview/
・ツリー全体表示

【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 -

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

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

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

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