前回と同様、環境依存つながりでmougの給湯室に書いたコードを載せておきます。
'**************************************************************
' スクロールバーが表示されるほど文字量が増えたら
' 自動的にフォントサイズを調整する疑似テキストボックスのサンプル
'
' 2015/9/9 - @kinuasa
'
' 要参照
' Microsoft HTML Object Library
' 要配置
' WebBrowserコントロール(WebBrowser1)(必須),
' CommandButtonコントロール(CommandButton1)(確認用なので必須ではない)
'**************************************************************
Option Explicit
Private WithEvents HTMLTextArea As MSHTML.HTMLTextAreaElement
Private TextAreaFontSize As Long
Private Const DefaultStyle As String = "width:100%;height:100%;border:none;overflow:auto;font-family:'MS UI Gothic';" 'スタイルは好みに応じて変更
Private Sub UserForm_Initialize()
TextAreaFontSize = 20 '初期値
With Me.WebBrowser1
.AddressBar = False
.MenuBar = False
.StatusBar = False
.Navigate "about:blank"
While .Busy Or .ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
With .Document
.body.Scroll = "no"
.body.Style.cssText = "margin:0;padding:0;"
Set HTMLTextArea = .createElement("textarea")
HTMLTextArea.Style.cssText = DefaultStyle & "font-size:" & TextAreaFontSize & "pt;"
.body.appendChild HTMLTextArea
End With
End With
End Sub
Private Sub HTMLTextArea_onkeydown()
If TextAreaFontSize > 10 Then 'フォントサイズの最小値指定
With HTMLTextArea
If HTMLTextArea.offsetHeight < HTMLTextArea.ScrollHeight Then
TextAreaFontSize = TextAreaFontSize - 2
.Style.cssText = DefaultStyle & "font-size:" & TextAreaFontSize & "pt;"
End If
End With
End If
End Sub
Private Sub CommandButton1_Click()
With HTMLTextArea
MsgBox .Value, vbInformation + vbSystemModal '確認用
.Value = ""
TextAreaFontSize = 20
.Style.cssText = DefaultStyle & "font-size:" & TextAreaFontSize & "pt;"
End With
End Sub
動きとしては面白いのですが、実際の業務で使うのはあまりオススメできません。
「こういうこともできるんだ!」と、楽しむくらいが良いと思います。




















この記事へのコメントはありません。