Excel VBA質問箱 IV

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

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


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

【47071】実行中の表示設定 sige 07/2/28(水) 11:58 質問[未読]
【47072】Re:実行中の表示設定 へっぽこ 07/2/28(水) 12:08 発言[未読]
【47105】Re:実行中の表示設定 sige 07/2/28(水) 22:40 発言[未読]
【47107】Re:実行中の表示設定 sige 07/2/28(水) 23:57 発言[未読]
【47111】Re:実行中の表示設定 Jaka 07/3/1(木) 9:46 発言[未読]
【47114】Re:実行中の表示設定 sige 07/3/1(木) 12:06 発言[未読]
【47115】Re:実行中の表示設定 りん 07/3/1(木) 14:29 発言[未読]
【47123】Re:実行中の表示設定 sige 07/3/1(木) 17:51 お礼[未読]
【47132】Re:実行中の表示設定 りん 07/3/1(木) 20:56 発言[未読]
【47122】Re:実行中の表示設定 Kein 07/3/1(木) 17:48 回答[未読]
【47124】Re:実行中の表示設定 sige 07/3/1(木) 18:08 発言[未読]
【47125】Re:実行中の表示設定 sige 07/3/1(木) 18:11 発言[未読]
【47126】Re:実行中の表示設定 Kein 07/3/1(木) 18:16 発言[未読]
【47127】Re:実行中の表示設定 sige 07/3/1(木) 18:27 お礼[未読]
【47129】Re:実行中の表示設定 Kein 07/3/1(木) 18:55 発言[未読]
【47131】Re:実行中の表示設定 sige 07/3/1(木) 19:48 お礼[未読]

【47071】実行中の表示設定
質問  sige  - 07/2/28(水) 11:58 -

引用なし
パスワード
   よろしくお願いします。
下記コードに於いて実行中であることが
解るようにたとえばコマンドボタンの表示を実行中は
(実行中)などの表示に変えることはできますか。
約50〜60秒終了までに要するため
Private Sub CommandButton1_Click()
  Dim i As Long, k As Long
  Dim mySource As Worksheet
  Dim myRange As Range, c As Range
  Dim s1 As String
  Dim s2 As String
  
  'Dim i As Long
  Dim j As Long
  Dim v As Variant
  
  ActiveSheet.Unprotect
  
  Application.ScreenUpdating = False
  
  v = Array("C3", "G3", "N3", "S3", "V3")
  j = 8
  For i = LBound(v) To UBound(v)
    Worksheets("支払入力").Range(v(i)).Resize(20).Formula _
      = "=LEFTB(発注先!$B" & j & ",6)" & _
              " & "" "" & 発注先!$J" & j & ""
    j = j + 20
  Next


  Range("C28,C3:D22,G3:J22,N3:O22,S3:S22,V3:W22").Select
  Selection.Font.ColorIndex = 10
  Range("C3").Select
  
  Set mySource = Worksheets("発注先")
  Set myRange = Range("C3:C22,G3:G22,N3:N22,S3:S22,V3:V22")
  
    k = 0
  For Each c In myRange
    With c
      k = k + 1
  
   s1 = mySource.Cells(7 + k, 2).Value
   s2 = mySource.Cells(7 + k, 10).Value
      .Value = StrConv(LeftB(StrConv(s1, vbFromUnicode), 6), vbUnicode) & " " & s2
      i = InStr(.Text, " ")
      If i Then
        .Characters(i).Font.Color = vbBlue

      End If
    End With
  Next
  Application.ScreenUpdating = True
  Call 保護8
End Sub

【47072】Re:実行中の表示設定
発言  へっぽこ  - 07/2/28(水) 12:08 -

引用なし
パスワード
   こういうこと?

Private Sub CommandButton1_Click()
 Dim 元の文字 As String
 
 元の文字 = CommandButton1.Caption
 CommandButton1.Caption = "実行中"
 
 MsgBox "もどしますね。"
 
 CommandButton1.Caption = 元の文字
End Sub

※わざわざ「元の文字」なんていう変数に入れとく必要はないですね。

【47105】Re:実行中の表示設定
発言  sige  - 07/2/28(水) 22:40 -

引用なし
パスワード
   ▼へっぽこ さん:
ありがとうございます。
下記要領でテストしてみたのですが
"文字見易くする"→"作動中"への
変化ないのですが?
どこか違いますか
Private Sub CommandButton1_Click()
  Dim 文字見易くする As String
  Dim i As Long, k As Long
  Dim mySource As Worksheet
  Dim myRange As Range, c As Range
  Dim s1 As String
  Dim s2 As String
  Dim j As Long
  Dim v As Variant

  文字見易くする = CommandButton1.Caption
  CommandButton1.Caption = "作動中"
   ActiveSheet.Unprotect
  
  Application.ScreenUpdating = False
  
  v = Array("C3", "G3", "N3", "S3", "V3")
  j = 8
  For i = LBound(v) To UBound(v)
    Worksheets("支払入力").Range(v(i)).Resize(20).Formula _
      = "=LEFTB(発注先!$B" & j & ",6)" & _
              " & "" "" & 発注先!$J" & j & ""
    j = j + 20
  Next


  Range("C28,C3:D22,G3:J22,N3:O22,S3:S22,V3:W22").Select
  Selection.Font.ColorIndex = 10
  Range("C3").Select
  
  Set mySource = Worksheets("発注先")
  Set myRange = Range("C3:C22,G3:G22,N3:N22,S3:S22,V3:V22")
  
    k = 0
  For Each c In myRange
    With c
      k = k + 1
  
   s1 = mySource.Cells(7 + k, 2).Value
   s2 = mySource.Cells(7 + k, 10).Value
      .Value = StrConv(LeftB(StrConv(s1, vbFromUnicode), 6), vbUnicode) & " " & s2
      i = InStr(.Text, " ")
      If i Then
        .Characters(i).Font.Color = vbBlue

      End If
    End With
  Next
  Application.ScreenUpdating = True
  Call 保護8
  CommandButton1.Caption = "文字見易くする"
End Sub

>こういうこと?
>
>Private Sub CommandButton1_Click()
> Dim 元の文字 As String
> 
> 元の文字 = CommandButton1.Caption
> CommandButton1.Caption = "実行中"
> 
> MsgBox "もどしますね。"
> 
> CommandButton1.Caption = 元の文字
>End Sub
>
>※わざわざ「元の文字」なんていう変数に入れとく必要はないですね。

【47107】Re:実行中の表示設定
発言  sige  - 07/2/28(水) 23:57 -

引用なし
パスワード
   下記のようにコード作成・実行してみたのですが
コマンドボタンを2度押さないと実行されません
一度クリックで作動中の表示&実行するには
何処を修正すればよいのでしょうか?
よろしくお願いします。

Private Sub UserForm_Initialize()
  Me.CommandButton1.Caption = "文字見易く"
End Sub
Private Sub CommandButton1_Click()
  Dim i As Long, k As Long
  Dim mySource As Worksheet
  Dim myRange As Range, c As Range
  Dim s1 As String
  Dim s2 As String
  Dim j As Long
  Dim v As Variant
  With CommandButton1
   If .Caption = "作動中" Then
     .Caption = "文字見易く"
   ActiveSheet.Unprotect
  
  Application.ScreenUpdating = False
  
  v = Array("C3", "G3", "N3", "S3", "V3")
  j = 8
  For i = LBound(v) To UBound(v)
    Worksheets("支払入力").Range(v(i)).Resize(20).Formula _
      = "=LEFTB(発注先!$B" & j & ",6)" & _
              " & "" "" & 発注先!$J" & j & ""
    j = j + 20
  Next


  Range("C28,C3:D22,G3:J22,N3:O22,S3:S22,V3:W22").Select
  Selection.Font.ColorIndex = 10
  Range("C3").Select
  
  Set mySource = Worksheets("発注先")
  Set myRange = Range("C3:C22,G3:G22,N3:N22,S3:S22,V3:V22")
  
    k = 0
  For Each c In myRange
    With c
      k = k + 1
  
   s1 = mySource.Cells(7 + k, 2).Value
   s2 = mySource.Cells(7 + k, 10).Value
      .Value = StrConv(LeftB(StrConv(s1, vbFromUnicode), 6), vbUnicode) & " " & s2
      i = InStr(.Text, " ")
      If i Then
        .Characters(i).Font.Color = vbBlue

      End If
    End With
  Next

   Else
     Application.EnableEvents = False
     .Caption = "作動中"
   End If
  End With
  Application.ScreenUpdating = True
  Call 保護8
End Sub

【47111】Re:実行中の表示設定
発言  Jaka  - 07/3/1(木) 9:46 -

引用なし
パスワード
   >  With CommandButton1
>   If .Caption = "作動中" Then
>     .Caption = "文字見易く"
     Doevents ←これ、もしくは、Me.Repaint
 略
>   Else
>     Application.EnableEvents = False
>     .Caption = "作動中"
     Doevents
>   End If
>  End With
>  Application.ScreenUpdating = True
>  Call 保護8
>End Sub

もしかしたら、
Application.ScreenUpdating ・・・
の位置を変えないとダメかもしれない。

【47114】Re:実行中の表示設定
発言  sige  - 07/3/1(木) 12:06 -

引用なし
パスワード
   ▼Jaka さん:
ありがとうございます。
下記実行してみたのですが
やはり2回クリツクしないとダメでした

>>  With CommandButton1
>>   If .Caption = "作動中" Then
>>     .Caption = "文字見易く"
>     Doevents ←これ、もしくは、Me.Repaint
> 略
>>   Else
>>     Application.EnableEvents = False
>>     .Caption = "作動中"
>     Doevents
>>   End If
>>  End With
>>  Application.ScreenUpdating = True
>>  Call 保護8
>>End Sub
>
>もしかしたら、
>Application.ScreenUpdating ・・・
>の位置を変えないとダメかもしれない。

【47115】Re:実行中の表示設定
発言  りん E-MAIL  - 07/3/1(木) 14:29 -

引用なし
パスワード
   sige さん、こんにちわ。

>ありがとうございます。
>下記実行してみたのですが
>やはり2回クリツクしないとダメでした

クリックしたら「作動中」で、処理が終わったら「文字見易く」ですよね?
Private Sub CommandButton1_Click()
  '最初に入れる
  CommandButton1.Caption = "作動中"
  DoEvents
  '
  Dim i As Long, k As Long
  Dim mySource As Worksheet
  Dim myRange As Range, c As Range
  Dim s1 As String
  Dim s2 As String
  
  <<<<中略>>>>
  Application.ScreenUpdating = True
  Call 保護8
  '最後に入れる
  CommandButton1.Caption = "文字見易く"
  DoEvents '念のため
End Sub

これでどうですか?

【47122】Re:実行中の表示設定
回答  Kein  - 07/3/1(木) 17:48 -

引用なし
パスワード
   基本的にりんさんのレスと同じですが、ユーザーフォームを表示するところから
の設定を絡めるなら

Private MyCaption As String

Private Sub UserForm_Initialize()
  MyCaption = "文字見易く"
  Me.CommandButton1.Caption = MyCaption
End Sub

Private Sub CommandButton1_Click()
  Dim i As Long, k As Long
  Dim mySource As Worksheet
  Dim myRange As Range, c As Range
  Dim s1 As String
  Dim s2 As String
  Dim j As Long
  Dim v As Variant

  CommandButton1.Caption = "作動中" Then
  ActiveSheet.Unprotect
  Application.ScreenUpdating = False
  v = Array("C3", "G3", "N3", "S3", "V3")
  j = 8
  For i = LBound(v) To UBound(v)
    Worksheets("支払入力").Range(v(i)).Resize(20).Formula _
      = "=LEFTB(発注先!$B" & j & ",6)" & _
              " & "" "" & 発注先!$J" & j & ""
    j = j + 20
  Next
  Range("C28,C3:D22,G3:J22,N3:O22,S3:S22,V3:W22") _
  .Font.ColorIndex = 10
  Range("C3").Select
  
  Set mySource = Worksheets("発注先")
  Set myRange = Range("C3:C22,G3:G22,N3:N22,S3:S22,V3:V22")
  
    k = 0
  For Each c In myRange
    With c
      k = k + 1
  
   s1 = mySource.Cells(7 + k, 2).Value
   s2 = mySource.Cells(7 + k, 10).Value
      .Value = StrConv(LeftB(StrConv(s1, vbFromUnicode), 6), vbUnicode) & " " & s2
      i = InStr(.Text, " ")
      If i Then
        .Characters(i).Font.Color = vbBlue

      End If
    End With
  Next
  With Application
    .EnableEvents = False
    .ScreenUpdating = True
  End With
  Call 保護8
  CommandButton1.Caption = MyCaption
  ActiveSheet.Protect
End Sub

コマンドボタンのイベントマクロは、冒頭部分と終わりのあたりのみ
「推測を入れた」変更をしています。中間部分は弄っていません。

【47123】Re:実行中の表示設定
お礼  sige  - 07/3/1(木) 17:51 -

引用なし
パスワード
   ▼りん さん:
ありがとうございます。
うまくいってしまいました。微妙ですね?
一昨晩から悩んでました
スッキリしました。

>>下記実行してみたのですが
>>やはり2回クリツクしないとダメでした
>
>クリックしたら「作動中」で、処理が終わったら「文字見易く」ですよね?
>Private Sub CommandButton1_Click()
>  '最初に入れる
>  CommandButton1.Caption = "作動中"
>  DoEvents
>  '
>  Dim i As Long, k As Long
>  Dim mySource As Worksheet
>  Dim myRange As Range, c As Range
>  Dim s1 As String
>  Dim s2 As String
>  
>  <<<<中略>>>>
>  Application.ScreenUpdating = True
>  Call 保護8
>  '最後に入れる
>  CommandButton1.Caption = "文字見易く"
>  DoEvents '念のため
>End Sub
>
>これでどうですか?

【47124】Re:実行中の表示設定
発言  sige  - 07/3/1(木) 18:08 -

引用なし
パスワード
   Keinさん
ありがとうございます。
すれ違ったみたいです。
動作確認してみたのですが下記のところが
赤色のままになってしまいます。
CommandButton1.Caption = "作動中" Then
原因解りますか?

【47125】Re:実行中の表示設定
発言  sige  - 07/3/1(木) 18:11 -

引用なし
パスワード
   Keinさん追伸です
>Keinさん
>ありがとうございます。
>すれ違ったみたいです。
>動作確認してみたのですが下記のところが
>赤色のままになってしまいます。
>CommandButton1.Caption = "作動中" Then
Then←でコンパイルエラーです
>原因解りますか?

【47126】Re:実行中の表示設定
発言  Kein  - 07/3/1(木) 18:16 -

引用なし
パスワード
   あぁ、すいません。そこは元のコードからコヒペしたときに
Then を消し忘れてました。

CommandButton1.Caption = "作動中"

と、修正して下さい。
あと、先のレスにも書いてますが「前後の部分は推測で」変更しています。
動作の手順などを良くたしかめて、テスト環境を作って試してみて下さい。
あるいは、りんさんのサンプルでうまくいっているなら、それを基本にして
UserForm_Initializeのマクロに、モジュールレベルのグローバル変数を
組み込む形に変更すれば良いのです。違っているのはその点だけですから。

【47127】Re:実行中の表示設定
お礼  sige  - 07/3/1(木) 18:27 -

引用なし
パスワード
   ▼Kein さん:
ありがとうございました。
最初作動中の表示が出なかったのですが
下記のように訂正したところ正常に出てくれました
  CommandButton1.Caption = "作動中"
  DoEvents
  DoEvents
  ActiveSheet.Unprotect
問題ありますか?
>あぁ、すいません。そこは元のコードからコヒペしたときに
>Then を消し忘れてました。
>
>CommandButton1.Caption = "作動中"
>
>と、修正して下さい。
>あと、先のレスにも書いてますが「前後の部分は推測で」変更しています。
>動作の手順などを良くたしかめて、テスト環境を作って試してみて下さい。
>あるいは、りんさんのサンプルでうまくいっているなら、それを基本にして
>UserForm_Initializeのマクロに、モジュールレベルのグローバル変数を
>組み込む形に変更すれば良いのです。違っているのはその点だけですから。

【47129】Re:実行中の表示設定
発言  Kein  - 07/3/1(木) 18:55 -

引用なし
パスワード
   >問題ありますか?
そちらで問題なく動作しているなら、特にないでしょう。
ただ、DoEvents は1回書けば足りると思いますけどね。

【47131】Re:実行中の表示設定
お礼  sige  - 07/3/1(木) 19:48 -

引用なし
パスワード
   ▼Kein さん:
返事ありがとうございました。
解決です!

【47132】Re:実行中の表示設定
発言  りん E-MAIL  - 07/3/1(木) 20:56 -

引用なし
パスワード
   解決後ですけどね。
>やはり2回クリツクしないとダメでした

>>>  With CommandButton1
      ↓最初のコードでは文字列の切替設定がここにしかみあたらないので、
      ↓2回クリックしないと元にはもどりませんよね。
>>>   If .Caption = "作動中" Then
>>>     .Caption = "文字見易く"

>> 略

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