始める前に、この質問にVBAのタグを付けたことを指摘したいと思います。これは、実際にはWinwrapの新しいタグを作成できず、WinwrapはVBAとほとんど同じであると言われているためです。
私はSPSSV19.0に取り組んでおり、指定された変数(またはすべての変数)にラベルがないすべての値を識別して値ラベルを割り当てるのに役立つコードを作成しようとしています。
以下の擬似コードは、単一の変数であるバージョン用です(おそらく、テキストボックスで入力されるか、SPSS Statsプログラムのカスタムダイアログを介して送信されます(変数名を指定する構文から.sbsファイルを呼び出します)。
擬似コードは次のとおりです。
Sub Main(variable As String)
On Error GoTo bye
'Variable Declaration:
Dim i As Integer, intCount As Integer
Dim strValName As String, strVar As String, strCom As String
Dim varLabels As Variant 'This should be an array of all the value labels in the selected record
Dim objSpssApp As 'No idea what to put here, but I want to select the spss main window.
'Original Idea was to use two loops
'The first loop would fill an array with the value lables and use the index as the value and
'The second loop would check to see which values already had labels and then
'Would ask the user for a value label to apply to each value that didn't.
'loop 1
'For i = 0 To -1
'current = GetObject(variable.valuelist(i)) 'would use this to get the value
'Set varLabels(i) = current
'Next
'Loop for each number in the Value list.
strValName = InputBox("Please specify the variable.")
'Loop for each number in the Value list.
For i = 0 To varLabels-1
If IsEmpty (varLabels(i)) Then
'Find value and ask for the current value label
strVar = InputBox("Please insert Label for value "; varLabels(i);" :","Insert Value Label")
'Apply the response to the required number
strCom = "ADD VALUE LABELS " & strVar & Chr$(39) & intCount & Chr$(39) & Chr$(39) & strValName & Chr$(39) &" ."
'Then the piece of code to execute the Syntax
objSpssApp.ExecuteCommands(strCom, False)
End If
'intCount = intCount + 1 'increase the count so that it shows the correct number
'it's out of the loop so that even filled value labels are counted
'Perhaps this method would be better?
Next
Bye:
End Sub
これは決して機能するコードではありません。基本的には、達成したいプロセスの疑似コードです。魔法になる可能性がある場合は、ヘルプを探しています。
事前に感謝し
ますMav