2016-11-07 5 views
1

vbaの.valueメソッドを使用してリスト内のデータを操作できました。しかし、特定の値を更新しようとすると、その値は空白として埋められ、変更されません。私はこのフィールドに日付をプッシュしようとしていますが、日付はカレンダーから日付をボックスに入れるリストの隣のカレンダーから取られます。ドームエクスプローラを使用するときは、オプション値を変更するだけで、フィールドの日付が変更されます。この同じオプションを変更するためにvalueメソッドを使用すると、フィールドは空白になります。何か案は?vbaからhtmlリストへの値の挿入

HTML code of page

Picture of list with calendar

私はこれを使用して値を変更することができました。そこには、すでにいずれかの値に

IE.Document.getElementsByTagName("select")(27).Value = _ 
    "[email protected]:gs.daysAgoStart(0)@javascript:gs.daysAgoEnd(0)" 

が、それを変更することはできません日付を受け入れるにもかかわらず日付。たとえば、次のようになります。

IE.Document.getElementsByTagName("select")(27).Value = "2016-11-04" 

何も選択されていない場合と同様に、リストを空白のままにします。カレンダーから抜粋したリストに既に入っている日付を入力しない限り、日付を変更することはできません。

+1

使用、MS HTMLコントロール、およびあなたが持っていることを、選択27するタイプIHTMLSelectElementのオブジェクトを設定します。 Intellisenseと地元の人々があなたを支援しなければならない、私はSelectedIndexを設定する必要があると思う。 Jqueryまたはカスタムカレンダーコントロールにすることができます。これには、操作が可能な心臓部があります。 –

答えて

0

オプションを選択するには、selectedIndexプロパティを使用します。新しいoption要素をselect要素に追加するには、最初にdoc.createElement("option")を使用して作成し、次にselect要素のaddメソッドを呼び出します。 HTH

Option Explicit 

' Add reference to Microsoft Internet Controls (SHDocVw) 
' Add reference to Microsoft HTML Object Library 

Sub NewOptionDemo() 

    Dim ie As SHDocVw.InternetExplorer 
    Dim doc As MSHTML.HTMLDocument 
    Dim url As String 

    url = "file:///c:/Temp/main.html" 
    Set ie = New SHDocVw.InternetExplorer 
    ie.Visible = True 
    ie.navigate url 

    While ie.Busy Or ie.readyState <> READYSTATE_COMPLETE 
     DoEvents 
    Wend 

    Dim htmlCombobox As MSHTML.HTMLSelectElement 
    Set doc = ie.document 
    Set htmlCombobox = doc.querySelector("select[id='select1']") 

    If (htmlCombobox Is Nothing) Then 
     MsgBox "No combobox with id 'select1' was found on the page." 
    Else 
     ' select first option 
     htmlCombobox.selectedIndex = 0 

     ' create new option, add this option to combobox and select it 
     Dim newOption As HTMLOptionElement 
     Set newOption = doc.createElement("option") 
     newOption.Value = "new-option" 
     newOption.Text = "New option" 
     htmlCombobox.Add newOption 
     htmlCombobox.selectedIndex = 3 

     ' chnge value and text of first option and select it again 
     htmlCombobox.Item(0).Value = "new-value-for-first-item" 
     htmlCombobox.Item(0).Text = "new value for first item" 
     htmlCombobox.selectedIndex = 0 
    End If 

    ie.Quit 
    Set ie = Nothing 
End Sub 

main.htmlを

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- saved from url=(0014)about:internet --> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
</head> 
<body> 
    <select id="select1"> 
     <option value="option1">Option 1</option> 
     <option value="option2">2016-11-04</option> 
     <option value="option3" selected="selected">Option 3</option> 
    </select> 
</body> 
</html>