Excel VBA質問箱 IV

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

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


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

【67784】テキストボックスに文字を出す あきら 11/1/8(土) 1:04 質問[未読]
【67786】Re:テキストボックスに文字を出す UO3 11/1/8(土) 10:28 回答[未読]
【67789】Re:テキストボックスに文字を出す UO3 11/1/8(土) 16:43 回答[未読]
【67796】Re:テキストボックスに文字を出す あきら 11/1/9(日) 13:08 質問[未読]
【67797】Re:テキストボックスに文字を出す neptune 11/1/9(日) 18:28 発言[未読]
【67802】Re:テキストボックスに文字を出す UO3 11/1/10(月) 17:41 回答[未読]

【67784】テキストボックスに文字を出す
質問  あきら  - 11/1/8(土) 1:04 -

引用なし
パスワード
   エクセルブックのSheet1にテキストブック1と
プログラム実行用のフォームボタンを用意します。

テキストボックス1に文字を出力するとします。
フォームボタンを1回押すと、「AAAAAAAAAA」と出る。
次にフォームボタンを1回押すと、「AAAAAAAAAA」の下の行に
「CCCCCCC」がでる。
再度、フォームボタンを1回押すと、テキストボックスがクリアされる

としたいのです。パワーポイントでのスライドショーのような感じです。
申し訳ありませんが、プログラムを教えていただけないでしょうか?
よろしくお願いいたします。

【67786】Re:テキストボックスに文字を出す
回答  UO3  - 11/1/8(土) 10:28 -

引用なし
パスワード
   ▼あきら さん:

サンプルです。(おまけ?でオートショー版も)

Sub ShowManual()
  Static cnt As Long
  Dim n As Long
  n = cnt Mod 3
  With ActiveSheet.TextBoxes("Text Box 1").Characters
    
    Select Case n
      Case 0
        .Text = "AAAAAAAA"
      Case 1
        .Text = .Text & vbLf & "CCCCCCCC"
      Case 2
        .Text = ""
    End Select
  End With
  cnt = cnt + 1
End Sub

Sub ShowAuto()
  Dim myWord As Variant
  Dim mysep As String
  mysep = ""
  With ActiveSheet.TextBoxes("Text Box 1").Characters
    .Text = ""
    For Each myWord In Array("AAAAAAAA", "CCCCCCCC")
      .Text = .Text & mysep & myWord
      Application.Wait Now() + TimeValue("0:0:1")
      mysep = vbLf
    Next
    MsgBox "ショーを終了します"
    .Text = ""
  End With
End Sub

【67789】Re:テキストボックスに文字を出す
回答  UO3  - 11/1/8(土) 16:43 -

引用なし
パスワード
   ▼あきら さん:

アップしたShowManual ですが、今後、表示する文字列数が増えた時に、コード修正を
最小限にするべく、ShouAutoと同じ構えにしました。

ShowAuto同様、表示する字列変更、追加、削除は、
Array("AAAAAAAA", "CCCCCCCC") の ( )内のみ手を入れればOKです。

Sub ShowManual()
  Static cnt As Long
  Static mysep As String
  Static myWords As Variant
  myWords = Array("AAAAAAAA", "CCCCCCCC")
  cnt = (cnt + 1) Mod (UBound(myWords) + 2)
  With ActiveSheet.TextBoxes("Text Box 1").Characters
    Select Case cnt
      Case 0
        .Text = ""
        mysep = ""
      Case Else
        .Text = .Text & mysep & myWords(cnt - 1)
        mysep = vbLf
    End Select
  End With
  
End Sub

【67796】Re:テキストボックスに文字を出す
質問  あきら  - 11/1/9(日) 13:08 -

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

教えていただきまして、誠にありがとうございました。
本当に助かりました!

追加質問があります。
テキストボックスはある規定文字数以上の文字を出力しようとしても、
表示されないような気がします。
教えていただいたコードで多い文字数を試したのですが
表示されませんでした。
この文字数の上限を増やすことはできるのでしょうか?

【67797】Re:テキストボックスに文字を出す
発言  neptune  - 11/1/9(日) 18:28 -

引用なし
パスワード
   ▼あきら さん:
UO3 さんじゃないですが、

>テキストボックスはある規定文字数以上の文字を出力しようとしても、
>表示されないような気がします。
既定文字数ってなんですか?気がしますって、?

>教えていただいたコードで多い文字数を試したのですが
>表示されませんでした。
>この文字数の上限を増やすことはできるのでしょうか?
どのようなコードを書いているのでしょう?
具体的なコードを書いた方がUO3 さんも無駄な想像をしないで済むし
他の誰かがアドバイスしてくれることもあるかもしれないので
恐らくあっさり解決しますよ。
サンプルはサンプルですからね。

少なくとも私には現状では最初からこのスレッドを最初から読んだ上で、
最後の追加質問を読んでも何が何だかわかりませんでした。

【67802】Re:テキストボックスに文字を出す
回答  UO3  - 11/1/10(月) 17:41 -

引用なし
パスワード
   ▼あきら さん:

>テキストボックスはある規定文字数以上の文字を出力しようとしても、
>表示されないような気がします。
>教えていただいたコードで多い文字数を試したのですが
>表示されませんでした。
>この文字数の上限を増やすことはできるのでしょうか?

お使いになってるのはフォームツール(というかAutoSapeの)テキストボックスですよね。
ここでは255文字までしか受け付けないようです。

もう1つのコントロール、コントロールツールボックスの(ActiveX)テキストボックスなら
デフォルトは文字数無制限(ただしメモリーの状況によっては制約があるようですが)
プロパティのMultiLineをTrueにしておけば改行も受けつけます。

シートにAutoShapeのテキストボックスとActiveXのテキストボックスを配置し
以下を試してみてください。
Test1,Test2はAutoShape用。Test1は255桁、Test2は256桁の文字をセット。
Test3はActiveX用。302桁をセットしています。

Sub Test1()
Dim s As String
Dim i As Long
  s = "A"
  For i = 1 To 253
    s = s & "B"
  Next
  s = s & "Z"
  MsgBox s
  With ActiveSheet.TextBoxes(1).Characters
    .Text = "ABC"
    MsgBox .Text
    .Text = s
    MsgBox .Text
  End With
End Sub

Sub Test2()
Dim s As String
Dim i As Long
  s = "A"
  For i = 1 To 254
    s = s & "B"
  Next
  s = s & "Z"
  MsgBox s
  With ActiveSheet.TextBoxes(1).Characters
    .Text = "ABC"
    MsgBox .Text
    .Text = s
    MsgBox .Text
  End With
End Sub

Sub Test3()
  Dim s As String
  Dim i As Long
  s = "A"
  For i = 1 To 300
    s = s & "B"
  Next
  s = s & "Z"
  MsgBox s
  With ActiveSheet.TextBox1
    .Text = "ABC"
    MsgBox .Text
    .Text = s
    MsgBox .Text
  End With
End Sub

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