Excelで取得したデータの加算


sakana  2006-01-21 01:03:09  No: 129715

初めて投稿します。私は以下のようなプログラムで、VB6を使ってVBからExcelの値を取得し、選択した分だけ加算するプログラムを作成しようとしています。コンボ
ボックスで選択し終わったら以下のプログラムにつながるようにしています。しかし現状では実行した際に、表示する場所であるlabel1が0としか表示されません。何とか加算した結果をlabel1に表示したいのですがもし間違っている個所がありましたら教えてください。

   strExcelFile = "C:\sheet.xls"
    strExcelSheet = "sheet1"
    
    Set objExcelApp = GetObject("C:\sheet.xls")
    objExcelApp.Windows(1).Visible = True
    objExcelApp.Application.Visible = True
    sum = 0
        
    If 教室表示.Caption = 第1教室 Then
        Label1.Caption = objExcelApp.ActiveSheet.Cells(25, 9).Value
        sum = sum + Label1.Caption
        
    ElseIf 教室表示.Caption = 第2教室 Then
        Label1.Caption = objExcelApp.ActiveSheet.Cells(27, 9).Value
        sum = sum + Label1.Caption
            
        Else
        Label1.Caption = sum
        
    End If
        objExcelApp.Save
        objExcelApp.Application.Quit


LESIA  2006-01-21 01:20:34  No: 129716

加算するということですが、最初にsum=0としているので、実行するたびに
値がクリアされてしまうのでは?
また、第1教室と第2教室は変数ではなく文字列なのでは?

    'sum = 0←不要
        
    If 教室表示.Caption = "第1教室" Then
        sum = sum + objExcelApp.ActiveSheet.Cells(25, 9).Value
    ElseIf 教室表示.Caption = "第2教室" Then
        sum = sum + objExcelApp.ActiveSheet.Cells(27, 9).Value
    End If
            
    Label1.Caption = sum


特攻隊長まるるう  2006-01-23 20:02:27  No: 129717

1行1行ステップ実行でデバッグすれば If  文の処理が有効に
なってないことくらいは分かるんじゃない?他人任せに質問じゃ
なく、自分で調べる努力をしましょう。

こーゆーミスを防ぐため、プログラムコードの1行目で
Option Explicit
と宣言してあればエラー表示されるんじゃないかな?
現在のコードだと、宣言されてない変数『第1教室』が
自動で用意されて中身が空のまま判定してると思うよ。
デバック時、ブレークポイントを設定して処理をとめて
変数の中身に何が入ってるかも確認して下さい。

対策は LESIA さんのレス通りだと思います。


sakana  2006-01-24 19:59:54  No: 129718

一応以下のプログラムを組んで実行してみました。しかし、現状は第2教室を選択しても第1教室の値がlabel1に書き込まれてしまいます。どこが間違っているか教えてください。

Option Explicit

Private Sub OK_Click()
    
    Dim Answer As String
    Dim objExcelApp As Workbook
    Dim strExcelFile As String
    Dim strExcelSheet As String
    Dim 第1教室 As String
    Dim 第2教室 As String
    Dim sum As Single
    Answer = MsgBox("入力完了ですか?", vbYesNoCancel, "MsgBox")
    
    If Answer = vbYes Then
    教室表示.Caption = 教室.Text & vbCrLf & 教室表示.Caption
    曜日表示.Caption = 曜日.Text
    時限表示.Caption = 時限.Text
    On Error Resume Next
       
    strExcelFile = "C:\エアコン電力.xls"
    strExcelSheet = "一覧"
    
    Set objExcelApp = GetObject("C:\エアコン電力.xls")
    objExcelApp.Windows(1).Visible = True
    objExcelApp.Application.Visible = True
           
    If 教室表示.Caption = "第1教室" Then
       
        sum = sum + objExcelApp.ActiveSheet.Cells(25, 9).Value
        
    ElseIf 教室表示.Caption = "第2教室" Then
        
        sum = sum + objExcelApp.ActiveSheet.Cells(27, 9).Value
         
       End If
        objExcelApp.Save
        objExcelApp.Application.Quit
        Label1.Caption = sum
                
    ElseIf Answer = vbNo Then
            
        曜日表示.Caption = 曜日.Text
        時限表示.Caption = 時限.Text
        教室表示.Caption = 教室.Text & vbCrLf & 教室表示.Caption      
    
    Else
    Answer = vbCancel
    教室.Text = ""
    
    End If    
End Sub


nameless  2006-01-24 20:27:52  No: 129719

Private Sub OK_Click()
    
    Dim Answer As String
    Dim objExcelApp As Workbook
>    Dim strExcelFile As String
>    Dim strExcelSheet As String
>    Dim 第1教室 As String
>    Dim 第2教室 As String
>    Dim sum As Single
>    Answer = MsgBox("入力完了ですか?", vbYesNoCancel, "MsgBox")
>    
>    If Answer = vbYes Then
>    教室表示.Caption = 教室.Text & vbCrLf & 教室表示.Caption
-----------------------------------------------------------
    この辺が怪しい


特攻隊長まるるう  2006-01-24 20:46:51  No: 129720

>    この辺が怪しい
確かに(^^;)
改行とか入ってるのに一致するわけが無い。
…一致しないことだけは分かるコードだ。

変数の中身を確認するように言ったはずですが?
Debug.Print とかで何が入ってるか書き出したら?
>If 教室表示.Caption = "第1教室" Then
とかの条件は完全に文字列が一致して無いと
有効にならないよ。部分一致とか人間が見た目に
同じっぽいではコンピュータは判断できません。


sakana  2006-01-24 22:24:16  No: 129721

以下のプログラムで値表示できるようになりました。加算がまだ出来ないので不安ですけど・・・。何とか考えてみます。

Option Explicit

Private Sub OK_Click()
    
    Dim Answer As String
    Dim objExcelApp As Workbook
    Dim strExcelFile As String
    Dim strExcelSheet As String
    Dim sum As Single
    Answer = MsgBox("入力完了ですか?", vbYesNoCancel, "MsgBox")
    
    If Answer = vbYes Then
    教室表示.Caption = 教室.Text & vbCrLf & 教室表示.Caption
    曜日表示.Caption = 曜日.Text
    時限表示.Caption = 時限.Text
    On Error Resume Next
       
    strExcelFile = "C:\エアコン電力.xls"
    strExcelSheet = "一覧"
    
    Set objExcelApp = GetObject("C:\エアコン電力.xls")
    objExcelApp.Windows(1).Visible = True
    objExcelApp.Application.Visible = True
           
    If 教室.text = 第1教室 Then
       
        sum = sum + objExcelApp.ActiveSheet.Cells(25, 9).Value
        
    ElseIf 教室.text = 第2教室 Then
        
        sum = sum + objExcelApp.ActiveSheet.Cells(27, 9).Value
         
       End If
        objExcelApp.Save
        objExcelApp.Application.Quit
        Label1.Caption = sum
                
    ElseIf Answer = vbNo Then
            
        曜日表示.Caption = 曜日.Text
        時限表示.Caption = 時限.Text
        教室表示.Caption = 教室.Text & vbCrLf & 教室表示.Caption      
    
    Else
    Answer = vbCancel
    教室.Text = ""
    
    End If    
End Sub


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加