C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■6306  グリッドの内容をExcelコピー
□投稿者/ なりたい -(2006/09/05(Tue) 20:01:19)

    分類:[C#] 


    分類:[C#] 

    こんばんわ。

    はじめまして。

    今、グリッドの項目をExcelファイルに保存する作業をやってます。
    それで、大きな問題があるので皆さんに質問します。

    まず、Microsoft Visual Studio .Net2003, Windwos XP, Excel2000の環境です。
    そして、C1ComponentOne と言う事を使っています。

    1.プログラムでExcelを操作するとメモリ問題。
    vb.netのrange.value "=SUM(A" & Col1 & ":A" & Col2 & ")"
    上のようにすれば、Excelの数式が出来ますが、データが多いと「メモリ不足」。

    その前の作業は
    1)グリッドの内容を編集します。
    2)グリッドの内容をExcelに全てコピーします。(C1FlexGridのメソッドを使っています。)
    3)保存したExcelファイルを
    「DirectCast(CreateObject("Excel.Application"), Excel.Application)」
    でメモリ上に呼び出します。
    4)"=SUM(A" & Col1 & ":A" & Col2 & ")"と"=INT(D" & j & " * F" & j & ")"をExcelファイルに適用する作業をします。
    5)もう一度Excelファイルを保存します。
    つまり、FileIOが多いので時間もすごく掛かるし、そのせで「メモリ不足」になるんだと思っていますが。

    普通、Excelファイルの行は3000以上です。そして、4)の作業はそのExcelファイルを一つずつ比べてSumとかINTをExcelファイルに書きます。かなり悪いと思います。

    で、C1ComponentOneに有る機能を使うと思いましだが、
    C1のはSumとINTなどのExcel数式が適用出来ません。

    下に問題のコードを付けます。
    一部分ですので、実行は出来ません。

    '明細Excel出力
    Public Function Write_DetailExcel() As Boolean
    Dim strStartCol, strEndCol As String
     Try
    Const ColKin As Integer = 7 '金額欄です。

       'Excelファイルを最後の行まで読みます。
    For i As Integer = 0 To intEnd

    '/////////////////////////////////////////////////////////////////////////
    'ページが区別されています。
    For j As Integer = alExcelStartRow(i) + 1 To alExcelEndRow(i) Step 2
    xlRange = DirectCast(xlParentRange(j, ColKin), Excel.Range)
    xlRange.pagebreak = Excel.XlPageBreak.xlPageBreakManual
       
    '一般項目ならD欄とF欄を掛けて金額欄に付けるExcel数式が必要です。
    xlRange.value = "=INT(D" & j & " * F" & j & ")" 
    xlRange = Nothing
    Next j

    '/////////////////////////////////////////////////////////////////////////

    '一つのページ処理が終わったらこのページの小計を付けます。
    strStartCol = CStr(CInt(alExcelStartRow(i)) + 1)
    strEndCol = CInt(alExcelEndRow(i))
    xlRange = DirectCast(xlParentRange(strEndCol + 2, ColKin), Excel.Range)
    xlRange.pagebreak = Excel.XlPageBreak.xlPageBreakManual
    xlRange.value = "=SUM(G" & strStartCol & ":G" & strEndCol & ")"

    Next i

    Catch ex As Exception
    Return False
    End Try
    End Function

    上の'//の部分が時間をすごく掛かっています。

    長い質問だったので申し訳ございません。。。
    それでは、お願いします。
親記事 /0過去ログ6より / 関連記事表示
削除チェック/

■6319  Re[4]: DBを介さずにデータセットのデータをDatagridに表示
□投稿者/ CCB -(2007/08/07(Tue) 18:40:37)
    No6311 (Hongliang さん) に返信
    > DataAdapter は忘れてください。
    >
    > DataTable の Columns に Add メソッドを使って列を追加し、
    > その後 Rows に Add メソッドを使って行を追加していってください。

    つまり、SQLは流せないということでしょうか?
    structを使わずにデータセットを選んだ理由が無くなってしまいますね。
記事No.6301 のレス /過去ログ17より / 関連記事表示
削除チェック/

■6318  Re[2]: VBで可変長textファイルを読む方法について
□投稿者/ 里江子さん -(2007/08/07(Tue) 18:39:38)
    No6316 (HiJun さん) に返信
    基本を理解していないので申し訳ありません。

    例えば

    DIM WRHXXF_Item AS String

    Open C:\DATA.TEXT For Random As #W_FILNO
    Get #W_FILNO, , WRHXXF_Item

    ではエラーになってしまいます。

     どうすれば良いでしょうか?
記事No.6312 のレス /過去ログ17より / 関連記事表示
削除チェック/

■6486  Re[2]: C#.NETでのTextBoxのイベントについて
□投稿者/ カオル -(2007/08/15(Wed) 23:01:19)
    No6485 (ダッチ さん) に返信
    > カオル さん、こんにちは
    > ダッチです。
    >
    >>VBだとTextBoxのイベントにLeaveがあるのですが、C#には無いのですか?
    > ありますよ。
    > どちらも同じ .NET Framework を使用する言語ですので同じイベントが使えます。
    >
    > デザイナ画面で TextBox を選択して、プロパティウィンドウから雷マークを選択して
    > Leave をダブルクリックすれば Leave イベントの出来上がりです。
    > VB のようにメソッドの後ろに Handles が付くことはありません。

    ありがとうございます。
    通りで、ググっても出てこないわけですね。
    本当に感謝しております。
    惚れそうなぐらいです。(冗談ですが)

    でも、本当にありがとうございます。
記事No.6484 のレス / END /過去ログ17より / 関連記事表示
削除チェック/

■66920  Re[2]: コントロール部品
□投稿者/ YM -(2013/06/06(Thu) 11:41:19)
    No66907 (魔界の仮面弁士 さん) に返信

    魔界の仮面弁士さん、ありがとうございました
記事No.66906 のレス / END /過去ログ113より / 関連記事表示
削除チェック/

■86479  Re[2]: テキストボックスでEnter キーを押した場合のプログラミン
□投稿者/ Yukihiko -(2018/02/02(Fri) 10:40:34)
    No86371 (魔界の仮面弁士 さん) に返信
    魔界の仮面弁士さま、詳しい解説有り難う御座いました。いろいろと勉強になりました。
    その後、二つほど、疑問が御座いますのでお教えを賜りたく思います。

    1. NumericUpDown を 9 個画面に貼り付け、TabStop プロパティを True としました。このとき、Tab キーおよび Enter キーでフォーカスは移動するのですが、9 番目の NumericUpDown で Tab キーまたは Enter キーをおすとフォーカスが消え、もう一度 Tab キーまたは Enter キーを押すと一番目の NumericUpDwn にフォーカスが戻ります。9 番目の NumericUpDown からすぐに 1 番目の
    NumericUpDown にフォーカスを移動させるには、どの様にしたら良いでしょうか ? なお、NumericUpDown は TabPage に貼り付けてあります。

    2. NumericUpDown2 で NumericUpzDown1 との合計値が 1800 を越えた場合、MessageBox でエラーを表示しています。同様に、NumericUpDown4 でも NumericUpDown1 から 4 の合計値が 1800 を越えた場合に messageBox で同じようにエラーを表維持したいのですが、コンパイルエラーとなってしまいます。この解決策をお教え下さい。

    プログラムを以下に示します。

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    If (e.KeyCode = Keys.Enter) Then
    Dim forward As Boolean = e.Modifiers <> Keys.Shift

    Me.SelectNextControl(Me.ActiveControl, forward, True, True, True)
    e.Handled = True
    End If

    End Sub

    Private Sub Numericupdown_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles NumericUpDown2.KeyPress
    If ((e.KeyChar = ControlChars.Cr) Or (e.KeyChar = ControlChars.Tab)) Then
    e.Handled = True
    Dim Ret As DialogResult

    If (NumericUpDown1.Value + NumericUpDown2.Value > 1800) Then
    Ret = MessageBox.Show("1st Start Time と 1st Control Time の合計値が 30 分を越えています。", _
    "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning)
    NumericUpDown1.Value = 0
    NumericUpDown2.Value = 0
    NumericUpDown1.Focus()
    End If
    End If
    End Sub
    'このロジックを追加すると上のサブルーチンでエラーとなります。
    Private Sub Numericupdown_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles NumericUpDown4.KeyPress
    If ((e.KeyChar = ControlChars.Cr) Or (e.KeyChar = ControlChars.Tab)) Then
    e.Handled = True
    Dim Ret As DialogResult

    If (NumericUpDown1.Value + NumericUpDown2.Value + NumericUpDown3.Value + NumericUpDown4.Value > 1800) Then
    Ret = MessageBox.Show("1st Start Time から 2nd ControlTime までの合計値が 30 分を越えています。", _
    "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning)
    NumericUpDown1.Value = 0
    NumericUpDown2.Value = 0
    NumericUpDown1.Focus()
    End If
    End If
    End Sub

    以上、宜しくお願い致します。
記事No.86368 のレス /過去ログ149より / 関連記事表示
削除チェック/

■86480  Re[3]: テキストボックスでEnter キーを押した場合のプログラミン
□投稿者/ 魔界の仮面弁士 -(2018/02/02(Fri) 12:26:21)
    No86479 (Yukihiko さん) に返信
    > 9 番目の NumericUpDown で Tab キーまたは Enter キーをおすとフォーカスが消え、
    > もう一度 Tab キーまたは Enter キーを押すと一番目の NumericUpDwn にフォーカスが戻ります。

    消えたのではなく、何か別のコントロールにフォーカスがある状態なのだと思います。

    それが何であるかを確認するため、以下のことを試してみてください。
    フォーカスが移動すると、フォームのタイトルにそのコントロールの名前が表示されるようになります。

    ==========================
    (1) ツールボックスから "Timer" を探し、それをフォームに貼ります。

    (2) フォームの Load イベントに以下のコードを記述し、タイマーを有効にします。

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
      '0.5秒間隔で監視する
      Timer1.Interval = 500
      Timer1.Start()
    End Sub

    (3) フォームに貼った Timer コンポーネントをダブルクリックするなどしてコードエディタを開き、
     Timer の Tick イベントを以下のように記述します。

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
     If Me.ActiveControl Is Nothing Then
      Me.Text = "フォーカスなし"
     Else
      Me.Text = TypeName(Me.ActiveControl) & "/" & Me.ActiveControl.Name
     End If
    End Sub

    (4) プログラムを実行し、9 番目の NumericUpDown で Tab キーを押して、フォームタイトルを確認します。
    ==========================



    > 9 番目の NumericUpDown からすぐに 1 番目の NumericUpDown にフォーカスを移動させるには、
    > どの様にしたら良いでしょうか ? なお、NumericUpDown は TabPage に貼り付けてあります。

    恐らくは TabControl にフォーカスが移動しているのだと思います。
    その TabPage の親となる TabControl の TabStop プロパティを False にすることで
    状況が変わってくるかもしれません。



    > Private Sub Numericupdown_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles NumericUpDown2.KeyPress
    > Private Sub Numericupdown_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles NumericUpDown4.KeyPress

    『Numericupdown_KeyPress』が 2 回登場していますね。
    名前と引数定義が同一な定義を複数回記述することは出来ません。


    このような場合には、それぞれのイベントハンドラーに対して、

    Private Sub NumericUpDown2_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles NumericUpDown2.KeyPress
    Private Sub NumericUpDown4_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles NumericUpDown4.KeyPress

    のように、それぞれに別の名前を割り当てるようにするか、もしくは、

    Private Sub NumericUpDowns_KeyPress(ByVal sender As NumericUpDown, ByVal e As KeyPressEventArgs) Handles NumericUpDown2.KeyPress, NumericUpDown4.KeyPress

    のように、一つのイベントハンドラーに対して、複数のイベントをまとめて割り当てるようにします。
    後者のようにまとめた場合には、実行時に引数 sender を調べることで、NumericUpDown2 と NumericUpDown4 の
    いずれのイベントが発生しているのかを区別することが出来ます。


    > If ((e.KeyChar = ControlChars.Cr) Or (e.KeyChar = ControlChars.Tab)) Then

    「Or」ではなく、短絡評価となる「OrElse」を使うようにしましょう。



    > NumericUpzDown1 との合計値が 1800 を越えた場合

    越ではなく超な気もしますが、それはさておき。



    > 2. NumericUpDown2 で NumericUpzDown1 との合計値が 1800 を越えた場合、MessageBox でエラーを表示しています。

    NumeriUpDown1 が 0 のまま、NumericUpDown2 に 1800 と入力した後で NumeriUpDown1 に戻り(合計1800)、
    NumeriUpDown1 の値を 0 から 1 に変更して Enter した場合(合計1801)は、警告しなくて良いのですか?


    > 同様に、NumericUpDown4 でも NumericUpDown1 から 4 の合計値が 1800 を越えた場合に messageBox で同じように
    > エラーを表維持したいのですが、コンパイルエラーとなってしまいます。

    そもそも、検出手順に問題があるように思えます。上記でも例示したように、ユーザーが必ずしも、
    NumericUpDown1〜9 を順番に入力するとは限らないことを念頭に設計した方が良いのではないでしょうか。

    たとえば
     NumericUpDown1 に「980」
     NumericUpDown2 に「760」
     NumericUpDown3 に「50」
    まで入力した場合、ここまでの合計は 1790 ですよね。

    ここで NumericUpDown3 の上で Enter も Tab も押さず、代わりに
    【Shift+Tab】を押して NumericUpDown2 に戻ったとします。

    そして
     NumericUpDown2 を「800」
    に変更し、さらに、NumericUpDown2 の上で Enter も Tab も押さず、
    NumericUpDown4 を【クリック】したとします。

    この場合、KeyDown イベントの処理を通過しないので、1800 超過の判定が行われません。
    その結果、NumericUpDown4 にフォーカスが遷移した時点で
     NumericUpDown1 に「980」
     NumericUpDown2 に「800」
     NumericUpDown3 に「50」
     NumericUpDown4 は初期値(たとえば 0)
    ということで、警告されることなく、合計 1830 に到達してしまうことになります。


    > この解決策をお教え下さい。

    これで如何でしょうか。
    ツールボックスから "ErrorProvider" を貼っておいてください。

    ※NumbericUpDown1〜4 のみ。5〜9 の処理は省略しています。

    Imports System.ComponentModel

    Public Class Form1
      Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyCode = Keys.Enter Then
          SelectNextControl(ActiveControl, Not e.Shift, True, True, True)
          e.Handled = True
        End If
      End Sub

      Private Sub NumericUpDowns_ValueChanged(sender As NumericUpDown, e As EventArgs) Handles _
        NumericUpDown1.ValueChanged, NumericUpDown2.ValueChanged, NumericUpDown3.ValueChanged, NumericUpDown4.ValueChanged

        ErrorProvider1.Clear()
        Dim total As Decimal = NumericUpDown1.Value + NumericUpDown2.Value + NumericUpDown3.Value + NumericUpDown4.Value
        If total > 1800D Then
          ErrorProvider1.SetError(sender, "合計値が 30 分を越えています。")
        End If
      End Sub

      Private Sub NumericUpDowns_Validating(sender As NumericUpDown, e As CancelEventArgs) Handles _
        NumericUpDown1.Validating, NumericUpDown2.Validating, NumericUpDown3.Validating, NumericUpDown4.Validating

        Dim total As Decimal = NumericUpDown1.Value + NumericUpDown2.Value + NumericUpDown3.Value + NumericUpDown4.Value
        If total > 1800D Then
          e.Cancel = True
          Dim ms As String = CStr(total \ 60D) & "分" & CStr(total Mod 60D) & "秒"
          MessageBox.Show("合計値が 30 分を越えています。(" & ms & ")", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        End If
      End Sub
    End Class
記事No.86368 のレス /過去ログ149より / 関連記事表示
削除チェック/

■86807  Re[4]: テキストボックスでEnter キーを押した場合のプログラミン
□投稿者/ Yukihiko -(2018/03/19(Mon) 13:08:04)
    No86480 (魔界の仮面弁士 さん) に返信
    > ■No86479 (Yukihiko さん) に返信
    >>9 番目の NumericUpDown で Tab キーまたは Enter キーをおすとフォーカスが消え、
    >>もう一度 Tab キーまたは Enter キーを押すと一番目の NumericUpDwn にフォーカスが戻ります。
    >
    > 消えたのではなく、何か別のコントロールにフォーカスがある状態なのだと思います。
    >
    > それが何であるかを確認するため、以下のことを試してみてください。
    > フォーカスが移動すると、フォームのタイトルにそのコントロールの名前が表示されるようになります。
    >
    > ==========================
    > (1) ツールボックスから "Timer" を探し、それをフォームに貼ります。
    >
    > (2) フォームの Load イベントに以下のコードを記述し、タイマーを有効にします。
    >
    > Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    >   '0.5秒間隔で監視する
    >   Timer1.Interval = 500
    >   Timer1.Start()
    > End Sub
    >
    > (3) フォームに貼った Timer コンポーネントをダブルクリックするなどしてコードエディタを開き、
    >  Timer の Tick イベントを以下のように記述します。
    >
    > Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    >  If Me.ActiveControl Is Nothing Then
    >   Me.Text = "フォーカスなし"
    >  Else
    >   Me.Text = TypeName(Me.ActiveControl) & "/" & Me.ActiveControl.Name
    >  End If
    > End Sub
    >
    > (4) プログラムを実行し、9 番目の NumericUpDown で Tab キーを押して、フォームタイトルを確認します。
    > ==========================
    >
    >
    >
    >>9 番目の NumericUpDown からすぐに 1 番目の NumericUpDown にフォーカスを移動させるには、
    >>どの様にしたら良いでしょうか ? なお、NumericUpDown は TabPage に貼り付けてあります。
    >
    > 恐らくは TabControl にフォーカスが移動しているのだと思います。
    > その TabPage の親となる TabControl の TabStop プロパティを False にすることで
    > 状況が変わってくるかもしれません。
    >
    >
    >
    >>Private Sub Numericupdown_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles NumericUpDown2.KeyPress
    >>Private Sub Numericupdown_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles NumericUpDown4.KeyPress
    >
    > 『Numericupdown_KeyPress』が 2 回登場していますね。
    > 名前と引数定義が同一な定義を複数回記述することは出来ません。
    >
    >
    > このような場合には、それぞれのイベントハンドラーに対して、
    >
    > Private Sub NumericUpDown2_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles NumericUpDown2.KeyPress
    > Private Sub NumericUpDown4_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles NumericUpDown4.KeyPress
    >
    > のように、それぞれに別の名前を割り当てるようにするか、もしくは、
    >
    > Private Sub NumericUpDowns_KeyPress(ByVal sender As NumericUpDown, ByVal e As KeyPressEventArgs) Handles NumericUpDown2.KeyPress, NumericUpDown4.KeyPress
    >
    > のように、一つのイベントハンドラーに対して、複数のイベントをまとめて割り当てるようにします。
    > 後者のようにまとめた場合には、実行時に引数 sender を調べることで、NumericUpDown2 と NumericUpDown4 の
    > いずれのイベントが発生しているのかを区別することが出来ます。
    >
    >
    >>If ((e.KeyChar = ControlChars.Cr) Or (e.KeyChar = ControlChars.Tab)) Then
    >
    > 「Or」ではなく、短絡評価となる「OrElse」を使うようにしましょう。
    >
    >
    >
    >>NumericUpzDown1 との合計値が 1800 を越えた場合
    >
    > 越ではなく超な気もしますが、それはさておき。
    >
    >
    >
    >>2. NumericUpDown2 で NumericUpzDown1 との合計値が 1800 を越えた場合、MessageBox でエラーを表示しています。
    >
    > NumeriUpDown1 が 0 のまま、NumericUpDown2 に 1800 と入力した後で NumeriUpDown1 に戻り(合計1800)、
    > NumeriUpDown1 の値を 0 から 1 に変更して Enter した場合(合計1801)は、警告しなくて良いのですか?
    >
    >
    >>同様に、NumericUpDown4 でも NumericUpDown1 から 4 の合計値が 1800 を越えた場合に messageBox で同じように
    >>エラーを表維持したいのですが、コンパイルエラーとなってしまいます。
    >
    > そもそも、検出手順に問題があるように思えます。上記でも例示したように、ユーザーが必ずしも、
    > NumericUpDown1〜9 を順番に入力するとは限らないことを念頭に設計した方が良いのではないでしょうか。
    >
    > たとえば
    >  NumericUpDown1 に「980」
    >  NumericUpDown2 に「760」
    >  NumericUpDown3 に「50」
    > まで入力した場合、ここまでの合計は 1790 ですよね。
    >
    > ここで NumericUpDown3 の上で Enter も Tab も押さず、代わりに
    > 【Shift+Tab】を押して NumericUpDown2 に戻ったとします。
    >
    > そして
    >  NumericUpDown2 を「800」
    > に変更し、さらに、NumericUpDown2 の上で Enter も Tab も押さず、
    > NumericUpDown4 を【クリック】したとします。
    >
    > この場合、KeyDown イベントの処理を通過しないので、1800 超過の判定が行われません。
    > その結果、NumericUpDown4 にフォーカスが遷移した時点で
    >  NumericUpDown1 に「980」
    >  NumericUpDown2 に「800」
    >  NumericUpDown3 に「50」
    >  NumericUpDown4 は初期値(たとえば 0)
    > ということで、警告されることなく、合計 1830 に到達してしまうことになります。
    >
    >
    >>この解決策をお教え下さい。
    >
    > これで如何でしょうか。
    > ツールボックスから "ErrorProvider" を貼っておいてください。
    >
    > ※NumbericUpDown1〜4 のみ。5〜9 の処理は省略しています。
    >
    > Imports System.ComponentModel
    >
    > Public Class Form1
    >   Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown
    >     If e.KeyCode = Keys.Enter Then
    >       SelectNextControl(ActiveControl, Not e.Shift, True, True, True)
    >       e.Handled = True
    >     End If
    >   End Sub
    >
    >   Private Sub NumericUpDowns_ValueChanged(sender As NumericUpDown, e As EventArgs) Handles _
    >     NumericUpDown1.ValueChanged, NumericUpDown2.ValueChanged, NumericUpDown3.ValueChanged, NumericUpDown4.ValueChanged
    >
    >     ErrorProvider1.Clear()
    >     Dim total As Decimal = NumericUpDown1.Value + NumericUpDown2.Value + NumericUpDown3.Value + NumericUpDown4.Value
    >     If total > 1800D Then
    >       ErrorProvider1.SetError(sender, "合計値が 30 分を越えています。")
    >     End If
    >   End Sub
    >
    >   Private Sub NumericUpDowns_Validating(sender As NumericUpDown, e As CancelEventArgs) Handles _
    >     NumericUpDown1.Validating, NumericUpDown2.Validating, NumericUpDown3.Validating, NumericUpDown4.Validating
    >
    >     Dim total As Decimal = NumericUpDown1.Value + NumericUpDown2.Value + NumericUpDown3.Value + NumericUpDown4.Value
    >     If total > 1800D Then
    >       e.Cancel = True
    >       Dim ms As String = CStr(total \ 60D) & "分" & CStr(total Mod 60D) & "秒"
    >       MessageBox.Show("合計値が 30 分を越えています。(" & ms & ")", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning)
    >     End If
    >   End Sub
    > End Class

    魔界の仮面弁士さま、お教え下さって有り難う御座います。病を得てしばらく書き込みが出来なかったことをお詫び申し上げます。問題は、解決致しました。ご丁寧な解説、有り難う御座いました。今後とも宜しくお願い致します。
記事No.86368 のレス / END /過去ログ149より / 関連記事表示
削除チェック/

■94405  Re[4]: Pythonでのfor文による繰り返し
□投稿者/ るる -(2020/04/10(Fri) 09:37:32)
    No94404 (魔界の仮面弁士 さん) に返信
    
    > エラーメッセージそのままですね。print の前に置かれるべき
    > インデント(行頭の空白字下げ)ブロックが漏れています。
    
    まだ不慣れで申し訳ありません。
    
    
    > あと、ループ後に特にやるべきことが無いのなら、else: 句は削除しましょう。
    
    VBでのこのような場合には、どのように書けば良いのでしょう?
    
            For i = 0 To 2
                Print("012")
                'ここに他の作業もあります
            Next
    
    
    
記事No.94400 のレス /過去ログ163より / 関連記事表示
削除チェック/

■98348  Re[5]: エクセルのVBAでのエラーの原因と対処方法について
□投稿者/ くま -(2021/11/03(Wed) 16:11:58)
記事No.98343 のレス /過去ログ171より / 関連記事表示
削除チェック/

■98371  Re[6]: エクセルのVBAでのエラーの原因と対処方法について
□投稿者/ 初心者 -(2021/11/08(Mon) 10:52:20)
記事No.98343 のレス /過去ログ171より / 関連記事表示
削除チェック/

■100316  Re[11]: IIS 10.0 URLのパラメータの日本語が文字化け
□投稿者/ 魔界の仮面弁士 -(2022/07/15(Fri) 14:59:58)
    2022/07/15(Fri) 15:05:00 編集(投稿者)

    No100313 (大谷刑部 さん) に返信
    >>Shift_JIS でエンコードされた "テスト" を UTF-8 でデコードすると "繝・せ繝・" に化けます。
    >>UTF-8 でエンコードされた "テスト" を Shift_JIS でデコードすると "?e?X?g" に化けます。
    > 逆じゃありません?

    Oops...逆になってますね。(汗
    大変申し訳ない。


    Shift_JIS "テスト"は「83 65 83 58 83 67」
    (パーセントエンコードした場合は "%83e%83X%83g")
    これを UTF-8 で復元すると
     83 → (不正データ)
     65 → "e"
     83 → (不正データ)
     58 → "X"
     83 → (不正データ)
     67 → "g"
    という化け方。


    UTF-8 "テスト" は「E3 83 86 E3 82 B9 E3 83 88」
    (パーセントエンコードした場合は "%E3%83%86%E3%82%B9%E3%83%88")
    これを Shift_JIS として復元すると
     E383 → "繝"
     86E3 → "・" …Shift_JIS では未定義、Shift_JIS-2004 ではU+32DA (丸サ)
     82B9 → "せ"
     E383 → "繝"
     88 → (不正データ)
    という化け方。
記事No.100277 のレス /過去ログ174より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -