|
▼さつき さん:
おはようございます。
>エクセルのVBAを使用して一分間に140の値が加算される世界人口時計を作成したいのですが、そういったものはVBAで作成可能でしょうか。
ぱっせんじゃーさんの投稿のように数字の見栄えのことを言っておられるなら、
この投稿は的外れですが・・・。
>VBAでアナログ時計は作成したことがあるのですが、デジタルのものを作成したことはありません。
私もアナログ時計はお遊びで作ったことがありますが、
基本的には、デジタルの方が簡単だと思いますよ
新規ブックにユーザーフォームを一つ作成して置いてください。
(Userform1)
コントロールは、コードで作成しますから、一切要りません。
上記のUserform1のモジュールに
'==================================================================
Option Explicit
Public cls As Long
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = True
cls = 1
Me.Hide
End If
End Sub
標準モジュールに
'========================================================================
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'========================================================================
Sub main()
Dim ie As Object
Dim idoc As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = False
.navigate "http://www.census.gov/ipc/www/popclockworld.html"
' ↑httpは半角に訂正してください
Call set_userform
UserForm1.Show vbModeless
DoEvents
Do
DoEvents
Do While .Busy = True Or .readyState <> 4
Loop
Set idoc = ie.document
UserForm1.Controls("label1").Caption = idoc.getElementById("worldnumber").innerText
DoEvents
Sleep 5000
.Refresh
Loop Until UserForm1.cls = 1
.Quit
End With
Set ie = Nothing
Set idoc = Nothing
Unload UserForm1
End Sub
'========================================================================
Sub set_userform()
Load UserForm1
With UserForm1
.Caption = "世界人口時計"
.Height = 100
.Width = 250
With .Controls.add("Forms.Label.1", "label1", True)
.Left = 36
.Top = 24
.Width = 180
.Height = 26
.Font.Size = 26
.BackColor = &H80000009
.textAlign = 3
End With
End With
End Sub
として、mainを実行してみてください。
どこから、人口情報を取得するかですが・・・。
尚、Doeventsのタイミングでしかユーザーフォームを閉じることが出来ませんから、
連続で閉じるボタンをカチカチしてください。
処理が終了します。
|
|