はじめたばかりの人専用Q&A掲示板
今日の新規投稿数:0 |
今日の返信投稿数:1 |
昨日の新規投稿数:0 |
昨日の返信投稿数:0
トップ
- 前に戻る(B )
■現在の記録記事数:3598件
[ ページ ] 1 2 3 4 5 6 7 8 9 10 11 ... Next ->
[開く] #3942 【ヒント・TIPS】 写メ公開中 ■ 栄子 2012-05-20(日) 21:47
あなたにピッタリの男性みつかります!d(´∀`*)★ http://sns.44m4.net/
■VBのバージョン : Visual Basic 2010
> > ■VBのバージョン : Visual Basic 2010
> > いつも参考にさせて頂いております
> > VB2010を使用しております
>
早速、回答頂きましてありがとうございました。
次回より超初心者に質問にさせて頂きます(^^)
>
うまく停止しました。
ありがとうございました。
その他のご教授も頂きありがとうございました。
すごく勉強になりました。
> ■VBのバージョン : Visual Basic 2010
> いつも参考にさせて頂いております
> VB2010を使用しております
『少しでも分かっていて、少しでも自分でプログラミングを始めている方は
この掲示板に質問しないようにしましょう。』
という注意書きがあったかと思います。
ここまで書けるレベルなら、超初か Q&A の掲示板で良いかも知れません。
> 再生中○分後に自動で一時停止し
Timer をフォームに貼って、Tick イベントで定期的に時間経過を調べ、
〇分経過していたら、一時停止(pause)か再生停止(stop)のメソッドを
呼び出してみるのはどうでしょう。
Private limitTime As Date
Private Sub Button1_Click() Handles Button1.Click
Me.limitTime = Now.AddMinutes( N ) 'N分後の時刻を取得
Me.Timer1.Start()
Me.AxWindowsMediaPlayer1.Ctlcontrols.URL = target
Me.AxWindowsMediaPlayer1.Ctlcontrols.play()
End Sub
Private Sub Timer1_Tick() Handles Timer1.Tick
If Me.limitTime <= Now Then
Me.Timer1.Stop()
Me.AxWindowsMediaPlayer1.Ctlcontrols.pause()
End If
End Sub
> Button3をクリックし再生させたいと思っておりますが
プログラムから「Button3 をクリックしたことにしたい」のでしょうか。
それとも、Button3 をクリックするのは利用者でしょうか。
プログラムから Button3_Click の処理を呼び出したいという意味であれば、
「Button3.PerformClick()」を呼び出せば OK です。
> If Me.AxWindowsMediaPlayer1.playState = 2 Then
「2」などのマジックナンバーではなく、
「WMPLib.WMPPlayState.wmppsPaused」などを使った方が良いですよ。
開発環境も明示していただけるようお願いします。
Excel 2010 VBA なのか、VB2010 Express なのか、HTML + VBScript なのか、
ひとくちに「VB」といっても、環境によってコーディングは微妙に異なることがあります。
(簡単な足し算処理ということなので、Excel VBA ということは無さそうですけれども)
> ユーザーに1〜64までの好きな数字を入力してもらい、入力してもらった数字に1925を足した数を表示するものを作っています。
たとえば、ボタンを押したときに昭和→西暦変換を行いたいのであれば、
ボタンの Click イベント内に、+1925 するための計算処理を記述することになります。
VB6以下 や VB.NET(2002〜2010) などの場合は、デザイン時に画面にボタンを貼りつけて、
それをダブルクリックしてください。コードエディタが起動して、Click イベント記述用の
Private Sub ボタン名_Click(〜〜
End Sub
というブロックが表示されるかと思います。
この Private Sub から End Sub までの間の行に、実際の計算処理を記述してあげてください。
もしもボタンクリック時以外のタイミングで計算させたい場合は、
Click イベント以外のイベントに記述することになるでしょう。
実際に記述する処理の流れとしては、たとえば
(1) TextBox の内容が 1 〜 64 の範囲の値かどうかを調べる。
(2) 正しい数字であったら、それを数値に変換する。
(3) 得られた数値に、1925 を加算する。
(4) 得られた数値を数字に変換する。
(5) それを Label に表示させる。
という手順とすることができます。
ただ、いきなりそこまで細かく処理していくのは難しいと思いますので、
最初のうちは入力値チェックやデータ型変換といった細かい部分は省いてしまって、
メインとなる (3) に注力した方が良いでしょう。
たとえば VB6 であれば、クリックイベントの中に
Label1.Caption = 1925 + Text1.Text
と書くことができます。(VB.NET 系だとまた違ったコードになります)
もちろん、このままでは値のチェック等が無いので、数字以外が渡されたときに
エラーになったりします。徐々に肉付けをしていきましょう。
なお、VB.NET の場合は、TextBox のかわりに NumericUpDown を利用するのも手です。
これは数値入力に特化したコントロールで、入力されつ値も 0〜100 とか 1〜64 といった、
特定の範囲の数値のみ制限できるため、入力値の検証を省くことができます。
> コードをどのように書いたらよいかわかりません。
現在はどのような状態でしょうか?
(a) とりあえず VB で書いてみたが、正しい結果にならない(誤動作の理由が分からない)
(b) コードは書いてみたものの、コンパイルエラーになってしまう(文法違反の理由が分からない)
(c) 処理の手順は思いついたが、それを VB でどのように表現すれば良いのか分からない(VB の命令が分からない)
(d) VB のコードにする以前に、どのような手順で処理させるべきか思いつかない(アルゴリズムが分からない)
(e) その他(コードエディタの起動方法が分からない、実行のさせ方が分からないなど)
> あと、コーデイングの参考書で何か、
VB中学校などといった、入門系サイトの講座を一通り実践するのも良いかもしれません。
http://homepage1.nifty.com/rucio/main/main.htm
あとは、入門者向けというよりは初心者〜中級者向けになってしまいますが、
Microsoft の自習書シリーズやサンプル集(10行でズバリ!)等とか。
http://msdn.microsoft.com/ja-jp/netframework/aa663309
> よい参考書があればそちらも教えて下さい。
VB のバージョンが分からないので、具体的な書名の紹介は避けますが、
レビュー等である程度の評価が付いているところでは、
著者でいえば、河西朝雄さん、羽山博さんあたり、
出版社では、日経BP、インプレス、ソフトバンクとかですかね。
入門書の類は、初心者や中級者には物足りなく感じることもあって、
何をもって良著と呼ぶのかは判断が分かれるところです。
可能であれば図書館や大型書店などで自分の目で見て選んだ方が良いと思いますよ。
# VB の文法を学びたいのか、それとも開発ツールとしての VB の使い方が知りたいのか、
# あるいは(VB に限らず)アルゴリズムについて知りたいのか、逆引きできる書籍が良いのか、
# ゲーム作成に特化したものが欲しいのか、データベース操作について書かれたものが良いのか、
# 情報量は少なくとも解説図が多い方が良いのか、図解よりもサンプルが多い方が良いのか、
# 腰を据えて読めるボリュームのある本(厚い本や上下巻構成のものなど)が良いのか、
# それとも空き時間にさっと読める薄い本が良いのか、などなど。
ユーザーに1〜64までの好きな数字を入力してもらい、入力してもらった数字に1925を足した数を表示するものを作っています。
TextBoxとLabelは配置したのですが、コードをどのように書いたらよいかわかりません。
本などで調べながらやっていますが、うまくいきません。アドバイスお願いします。
あと、コーデイングの参考書で何か、よい参考書があればそちらも教えて下さい。
> しかし担当者「以外」になるとどうしたらよいのでしょうか?
If 句で赤くするのではなく、Else 句で赤くすれば対処できそうですが、
そもそも VBA で処理せずとも、条件付き書式で対応してしまうのは如何でしょう。
たとえば Sheet2 の A 列に
鈴木
佐藤
山田
と入れておきます。
そして Sheet1 の D 列を選択した状態で、条件付き書式で
『=NOT(ISBLANK($D1))*ISNA(MATCH($D1,Sheet2!A:A,0))』
という数式に対して、赤背景な書式を割り当てます。
こうすれば、Sheet1 の D 列に対して「田中」と入力すると、
そのセルが自動的に赤くなります。
Sheet2 に記載された担当者(「鈴木」や「佐藤」)の場合は着色されません。
自分の能力以上の仕事を受け持ってしまい右往左往しております。
カラムDに担当者名を入力します。
仕事によって担当者が違うため、担当以外の人名を入力したらそのセルを赤く塗りつぶしたいです。
特定の文字が入力されたら色を付けるというのは、
Sub 特定セル色付け()
行 = 2
Do While Cells(行, 4) <> ""
文字列 = Cells(行, 4)
If InStr(文字列, "鈴木") >= 1 Or _
InStr(文字列, "佐藤") >= 1 Then
Cells(行, 4).Interior.ColorIndex = 3
End If
行 = 行 + 1
Loop
End Sub
というもので解決できました(人に聞いたものを応用したものです。自分で最初から書いたわけではありません)。
しかし担当者「以外」になるとどうしたらよいのでしょうか?
何卒ご教示よろしくお願いいたします。
> いずれにせよ、この掲示板で続けるべき話でも無いので、もしも追加質問があるのなら、
> Q&A 掲示板あたりで再質問されるようお願いいたします。
ありがとうございました。
出直して参ります。
板違いなので、そろそろ掲示板を移動して頂いてもよろしいでしょうか。
「新規投稿」ボタンを押した時の注意事項にも書いてありましたように、
『少しでも分かっていて、少しでも自分でプログラミングを始めている方は
この掲示板に質問しないようにしましょう。』
とのローカルルールがありますので。
> 今までxlApp で指定していた部分(下記)はどのようにすればいいでしょうか?
DDE でやりとりする手法に変更するか、ROT 経由で取り出すかになりますね。
いずれにせよ、この掲示板で続けるべき話でも無いので、もしも追加質問があるのなら、
Q&A 掲示板あたりで再質問されるようお願いいたします。
> 一応、バージョン別 ProgId もあるのですが、実際のところ、
> どのバージョンが起動されるかを保証できません。
そうですか。。。調べてみますと、
どうやらインストール順が関係してくるようですね。
> 代わりに、Excel.exe をフルパス指定して、(Shell 関数等で)呼び出す事で対応・・・
Shell関数を使ってExcel2007を起動して、ブックを開く事ができました。
Excelブックを開いた後、
今までxlApp で指定していた部分(下記)はどのようにすればいいでしょうか?
Public xlApp As Excel.Application
Public xlBook As Excel.Workbook
Public xlSheet1 As Excel.Worksheet
Set xlBook = xlApp.Workbooks.Open("C:\Book1.xlsm", , True, , "pass")
Set xlSheet1 = xlBook.Worksheets("sheet1")
xlApp.Visible = False
xlApp.Calculation = xlCalculationManual
xlApp.Range("A1").Value = 999
教えてください。よろしくお願いします。
> 複数のバージョンのExcel(2000&2003&2007)がインストールされているPCで
> バージョンを指定してExcelを起動する方法を教えてください。
CreateObject 経由では無理です。
一応、バージョン別 ProgId もあるのですが、実際のところ、
どのバージョンが起動されるかを保証できません。
代わりに、Excel.exe をフルパス指定して、(Shell 関数等で)呼び出す事で対応してみてください。
■VBのバージョン : Visual Basic 6.0, Excel 2007
複数のバージョンのExcel(2000&2003&2007)がインストールされているPCで
バージョンを指定してExcelを起動する方法を教えてください。
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\Book1.xlsm", , True, , "pass")
とした場合、ファイル変換中と表示された後エラーになってしまいます。
Excel2000&2007のPCでは問題は起きません。
> 掲示板の使い方より引用:
> 『少しでも自分でプログラミングを始めている方は
> この掲示板に質問しないようにしましょう。』
>
>
すみません。通常の方に続く質問を記載させていただきます
掲示板の使い方より引用:
『少しでも自分でプログラミングを始めている方は
この掲示板に質問しないようにしましょう。』
> 現在VBでPCがシャットダウンされたときに
> データをバックアップするプログラムを作成してます。
基本的には終了処理なので、長い処理を行うには向きません。
バックアップ目的には向かないように思います。
このような場合には、シャットダウン時にバックアップ処理を割り込ませるのではなく、
バックアップ処理が完了したら、シャットダウンを実行するようにした方が良いでしょう。
シャットダウン処理は、WMI の Win32_OperatingSystem クラスのメソッドを使うと簡単です。
> ちゃんとBackUp処理が終了してから終わるようにするにはどうしたらよいでしょうか?
ログオフ時で良いのであれば、こういった方法もあります。
http://blog.si-tec.jp/?p=118
http://www005.upp.so-net.ne.jp/piron/soft/logoff.htm
現在VBでPCがシャットダウンされたときに
データをバックアップするプログラムを作成してます。
色々捜してForm_QueryUnloadでUnloadMode=vbAppWindowsの時に
その処理を記載したらいいことがわかりました。
で、そのなかに記載して動かしてみた所
BackUp処理が終わる前に強制終了しているようなのです。
ちゃんとBackUp処理が終了してから終わるようにするにはどうしたらよいでしょうか?
超初心者な私に回答よろしくお願いいたします。
ちなみにこんな感じで記載してます。
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Cancel = False
If UnloadMode = vbAppWindows Then
' シャットダウン時、バックアップ処理
If Backup(GetNowTime(), False) = False Then
' バックアップが失敗した場合、キャンセルする。
'Cancel = True
End If
Else
' シャットダウン以外で呼び出された場合はキャンセルする。
Cancel = True
End If
End Sub
魔界の仮面弁士様
返信ありがとうございました。
先ほど教えて頂いたロジックを入力したところ無事範囲がわかりました。
本当にありがとうございます。
これは VB ではなく、Excel VBA ですね?
> .Range(.Cells(iRow + 2, iCol), .Cells(iRow + 3, lMaxCol)).ClearContents
> iRow = iRow + 4
これは恐らく With ブロックの内部だと思いますが、With が何を指しているのかで
結果が変わってきます。
> このロジックはどこを指しているのでしょうか?
とりあえず、
MsgBox .Range(.Cells(iRow + 2, iCol), .Cells(iRow + 3, lMaxCol)).Address(False, False, xlA1)
MsgBox .Range(.Cells(iRow + 2, iCol), .Cells(iRow + 3, lMaxCol)).Address(True, True, xlR1C1)
などとすればセルのアドレスが表示されますので、それで確認してみては如何でしょう。
初めて投稿させていただきます。
ほんとにお恥ずかしい質問かもしれませんが、
.Range(.Cells(iRow + 2, iCol), .Cells(iRow + 3, lMaxCol)).ClearContents
iRow = iRow + 4
このロジックはどこを指しているのでしょうか?
質問がわかりづらかったらどんどん言って下さい。
わかる範囲で補足いたします。
現状だとなんて伝えていいのかもわからないので・・・。
よろしくお願い致します。
ありがとうございました。
大変参考になる回答で、無事解決できました。
指定していたnameが違っていたようです><
この掲示板(はじかり)は、新規投稿時にお読みいただいた注意書きにありますように、
》 少しでも自分でプログラミングを始めている方はこの掲示板に質問しないようにしましょう。
というルールになっています。
区分けが曖昧になりつつはあるのですが、ぷぷさんのレベルの場合、
超初QA をお使いになられた方が良いと思います。次回以降、ご留意ください。
> For i As Integer = 0 To dgv1rowscount - 1
この場合のループカウンタ変数 i は、DataGridView1 の行番号を表していますよね。
そういう場合には i ではなく、row とか gyo とか y などのように
意味を推測できるような変数名を付けた方が良いですよ。
> For s As Integer = 0 To 1 ’現在はFORで対応しています。
この For ループは、何のために使われるものでしょうか?
(ループカウンタ変数 s が使われている箇所も、特に無いようですし)
> sum = Me.DataGridView1("列名国語"(現在はforで対応), i).Value + Me.DataGridView1("列名数学", i).Value
たとえば、「列名国語」という 4 文字の列名が付いているのであれば、
Me.DataGridView1("列名国語", i).Value
という部分を、
dgv1国語列 = "列名国語"
という String 型の変数(もしくは定数)を使って、
Me.DataGridView1(dgv1国語列, i).Value
と記述できますよ。
> ◎エラー結果
> 国語 という列は見つかりません。
> パラメータ名: columnName
列名(columnName)は"国語" ではなく、"列名国語" なのですよね? であれば、
> Const dgv1国語列 As String = "国語"
を
Const dgv1国語列 As String = "列名国語"
にする必要があるでしょう。
もしも定数側は "国語" のまま修正したくないのであれば、
Me.DataGridView1(dgv1国語列, i).Value
の代わりに
Me.DataGridView1("列名" & dgv1国語列, i).Value
のように記述するという事もできます。
datagridviewにcsvを読み込んで、以下の部分(列名国語、数学)を動的にしたいと考えています。
Dim sum as integer
For i As Integer = 0 To dgv1rowscount - 1
For s As Integer = 0 To 1 ’現在はFORで対応しています。
sum = Me.DataGridView1("列名国語"(現在はforで対応), i).Value + Me.DataGridView1("列名数学", i).Value
Me.DataGridView1(8, i).Value = sum
Next
next
この列指定がうまくいかずに困っています。
なにかよい提案がありましたら、教えてください。よろしくお願いします。
◎試してダメだったこと。
Const dgv1国語列 As String = "国語"
◎エラー結果
国語 という列は見つかりません。
パラメータ名: columnName
■VBのバージョン : Visual Basic .NET(2002, 7.0 for .NET 1.0)
新しい情報、オンラインコミュニティ、ヘッドライン、ダウンロード、xmlwebサービス、webホスト
の項目をクリックしても、”この機能を使うには、以前にインターネットに接続していたか、または、現在オンラインでなければなりません。”
どうしたら接続、この項目をつかえるのでしょうか。
教えてください。お願い!
> 回答を頂いてからちょっと考えてみたんですけど、私の場合「オブジェクトはインスタンス化
> しなければいけない」とか、「コンストラクタ」とか、この辺のところがよく、というよりか
> 全然わかってないみたいです。「オブジェクト指向」の基本がわかっていない、ということな
> んでしょうか。
> といいますのも、せっかくご指摘頂いたのに
そこいら辺は、おいおい分かってください。(^^)
クラスという概念は、なかなか理解できないし、たぶん、クラスを使ったコードをたくさん書
かなければ身に付かないと思います。クラスやインスタンスを意識しつつ、勉強、コード作成
をしていけば、そのうち分かると思います。
> > 顧客一覧の方で、サービス履行登録のフォーム名を使って顧客コードを設定しようとして
> > フォーム名を指定すると、それはデフォルトインスタンスになります。サ
> > ービス履行登録が、デフォルトインスタンスで開かれていない場合は、別途デフォルトイ
> > ンスタンスが開かれてそうなります。
>
> のところは、何のことかサッパリわかりません。ゴメンナサイ。
本来の説明からはずれる説明をします。(^^;
フォームには、本人と分身があります。本人は、フォーム名でアクセスできます。New で
作成する必要もありません。
分身は New で作り、a = New Form1 とセットした変数 a 経由でしかアクセスできません。
本人と分身に違いはありませんが、アクセスする方法に、手軽・面倒の違いがあります。
なので以下のルールを決めておくと簡単です。
○そのプログラムの実行期間の全てにおいて、1つだけ利用するフォームは New せずに
使用する(本人を使う)
○複数を利用するフォームは、New して分身を使用し、けっして本人は使わない(このた
め、変数経由のアクセスになる)
1つだけとしても、ダイアログボックスとして使うフォームなんかは、初期化を作り込ま
ずにいいよう New で作成してもイイと思います。
> > 1.サービス履行登録 → 顧客一覧を開く
> > 2.サービス履行登録 ← 顧客一覧が選んだ顧客を設定する
> ではないかと思いますが・・・
人が自然に考えるとそうなんですが、プログラム的に考えると違うというか、その考えで
作ると面倒になるのです。
その考えだと、
○サービス履行登録は、誰が顧客を選んでくれるか知っていなければならない
○顧客一覧は、誰に顧客情報を渡せばいいか知っていなければならない
という、双方向の繋がりが出来てしまいます。複雑です。
私が提案した後者の考えだと、
○サービス履行登録は、誰が顧客を選んでくれるか知っていなければならない
は同じですが、
○顧客一覧は、誰に顧客情報を渡せばいいか知らなくていい
という、単方向の繋がりになります。
繋がりが単純になるので、フォーム間(モジュール間)の「結合度が低い」となって、望
ましいプログラム設計になります。
ただ、このためには、
○顧客一覧は、誰でも選んだ顧客情報を知ることが出来る仕組みを持たなければならない
となります。
これが先に提示したコード
If frmReg.ShowDialog = DialogResult.OK Then
Me.txtCustomerCode = frmReg.CustomerCode
End If
の
○DialogResult をかえすこと
○CustomerCode プロパティプロシージャを作り込み
ことになります。
文字列を扱うには
Len , Mid , Right , Left , Instr などがあります。
まずはこれらを調べて下さい。
> その後、Cというテキストファイルに、カウント数分文字列を書き出したいのですが、
> どのようにしたらよいでしょうか?
横から失礼です。
> 藤代千尋さん、回答ありがとうございました。
> 回答を頂いてからちょっと考えてみたんですけど、私の場合「オブジェクトはインスタンス化
> しなければいけない」とか、「コンストラクタ」とか、この辺のところがよく、というよりか
> 全然わかってないみたいです。「オブジェクト指向」の基本がわかっていない、ということな
> んでしょうか。
> といいますのも、せっかくご指摘頂いたのに
>
> > 顧客一覧の方で、サービス履行登録のフォーム名を使って顧客コードを設定しようとして
> > フォーム名を指定すると、それはデフォルトインスタンスになります。サ
> > ービス履行登録が、デフォルトインスタンスで開かれていない場合は、別途デフォルトイ
> > ンスタンスが開かれてそうなります。
本来フォームはクラスの種類であるので、フォーム名はクラス名です。
ただVB2005からはどうやらVB6のような暗黙のインスタンスが作られるようになりました(らしい)。
なので、フォームを継承したForm1のようなクラスは暗黙のうちにForm1という、
クラス名と同じ名前のオブジェクト変数が定義され、それがクラス:Form1のインスタンスをさす様にプログラムされています(Paritalな方に書いてあるかと)。
> 処理の流れについては、
> 1)「サービス履行登録」FORMを開く。(このときは顧客情報は何も表示されていない)
> 2)「顧客一覧」ボタンのクリックでDataGridView(顧客一覧)を開く
> 3)DataGridView(顧客一覧)の顧客IDをクリックすると
> 4)「サービス履行登録」FORMに顧客情報が表示される
> という流れですので、やはり
>
> > 1.サービス履行登録 → 顧客一覧を開く
> > 2.サービス履行登録 ← 顧客一覧が選んだ顧客を設定する
> ではないかと思いますが・・・
'私のイメージ的には
static class メイン
private 選択済顧客ID_
private sub 顧客情報更新(顧客ID)
選択済顧客ID_=顧客ID
'選択済顧客IDの顧客情報を表示する
end sub
public sub 顧客選択ボタンがおされた
顧客ID=顧客選択.顧客を選択させる(me)
call 顧客情報更新(顧客ID)
end sub
end class
class 顧客ID '1度だけ顧客IDを設定し、何度でも読み取れる
private flg
private 顧客ID_
pubilc function getID()
<顧客ID_ を返す>
end function
public function setID(顧客ID)
if flg then <2度目の登録なので例外を生成>
flg=1
顧客ID_=顧客ID
end function
end class
static class 顧客選択
private parent_
public function 顧客を選択させる(parent)
parent_=parent
'顧客情報を選択させる
if <選択した> then
<選択された顧客IDを返すか、Parentに何らかのメッセージを送信>
return 顧客ID
else
<例外、もしくは特別な値を返すか、Parentに何らかのメッセージを送信>
end if
end function
end class
'ですかね
藤代千尋さん、回答ありがとうございました。
回答を頂いてからちょっと考えてみたんですけど、私の場合「オブジェクトはインスタンス化
しなければいけない」とか、「コンストラクタ」とか、この辺のところがよく、というよりか
全然わかってないみたいです。「オブジェクト指向」の基本がわかっていない、ということな
んでしょうか。
といいますのも、せっかくご指摘頂いたのに
> 顧客一覧の方で、サービス履行登録のフォーム名を使って顧客コードを設定しようとして
> フォーム名を指定すると、それはデフォルトインスタンスになります。サ
> ービス履行登録が、デフォルトインスタンスで開かれていない場合は、別途デフォルトイ
> ンスタンスが開かれてそうなります。
のところは、何のことかサッパリわかりません。ゴメンナサイ。
今作ろうとしている簡単(らしいです)なプログラムでも
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
のエラーが頻発して、同じような箇所で1週間近くああでもないコウデモないを繰り返して
悶々とした日々を送っています。
処理の流れについては、
1)「サービス履行登録」FORMを開く。(このときは顧客情報は何も表示されていない)
2)「顧客一覧」ボタンのクリックでDataGridView(顧客一覧)を開く
3)DataGridView(顧客一覧)の顧客IDをクリックすると
4)「サービス履行登録」FORMに顧客情報が表示される
という流れですので、やはり
> 1.サービス履行登録 → 顧客一覧を開く
> 2.サービス履行登録 ← 顧客一覧が選んだ顧客を設定する
ではないかと思いますが・・・
あっ、スミマセン。
この回答を書きながら、
既に開いてあるFORMを一旦閉じて、それから再度FORMを開いてデータをセットしたら、
うまくいきました。本質的な解決ではないですけど、結果よければ取りあえずオーライに
します。
ありがとうございました。これからもよろしくお願いします。
> ところが、顧客コードを指定すると、新しい「サービス履行登録」FORMが開いて、そこに顧客
> 情報を表示してしまい、2つの同一FORMが開いてしまいます。コードは以下のように書きまし
> た。
顧客一覧の方で、サービス履行登録のフォーム名を使って顧客コードを設定しようとして
いませんか? フォーム名を指定すると、それはデフォルトインスタンスになります。サ
ービス履行登録が、デフォルトインスタンスで開かれていない場合は、別途デフォルトイ
ンスタンスが開かれてそうなります。
というか、流れがおかしくありませんか?
1.サービス履行登録 → 顧客一覧を開く
2.サービス履行登録 ← 顧客一覧が選んだ顧客を設定する
ではなく、
1.サービス履行登録 → 顧客一覧を開く
2.サービス履行登録 → 顧客一覧で選ばれた顧客を取得する
と、普通はすると思うのです。
If frmReg.ShowDialog = DialogResult.OK Then
Me.txtCustomerCode = frmReg.CustomerCode
End If
■VBのバージョン : VB6
Aというテキストファイルの任意の場所から、最終行までの文字列をカウントし、
Bというテキストファイルに文字列とカウント数を保存します。
その後、Cというテキストファイルに、カウント数分文字列を書き出したいのですが、
どのようにしたらよいでしょうか?
任意の場所というのは、
1=・・・・・
2=。。。。。
3=00000
4=99999
とテキストファイルに書いてあった場合、
3=以降の00・・から文字列として扱って行きたいのです。
宜しくお願いします。
■VBのバージョン : VB.2005
VB2005でWindowsアプリケーションを作り始めたところです。「顧客サービス管理」という内容で
す。「サービス履行登録」というFORMを開くとします。ここでは顧客に行ったサービスの内容を
登録します。最初に顧客を特定しなければなりませんので、「顧客一覧」ボタンをクリックして
顧客一覧(DataGridView)を表示します。この一覧で顧客コードを指定すると、元の「サービス
履行登録」画面に顧客情報を埋め込みたいと考えています。
ところが、顧客コードを指定すると、新しい「サービス履行登録」FORMが開いて、そこに顧客
情報を表示してしまい、2つの同一FORMが開いてしまいます。コードは以下のように書きまし
た。
Dim frmReg As New formServiceRegist
watasi_userId = myint
frmReg.Show()
Call frmReg.indicateData()
確かに既に「formServiceRegist」は開いているので、「frmReg.Show() 」が余分だと思い、
はずしてみたところ、エラーになってしまいます。
1)既に開いているFORMにデータをセットするか
2)既に開いているFORMを閉じる
かのどちらかの処理だと思うのですが、どのように進めたらよいのかさっぱりわかりません。
ご指導よろしくお願いします。
こっちで回答済み。
http://www.gizcollabo.jp/vbtomo/boards/vbqanda.php?do=spread&num=14583
マルチポストは禁止ですよ。
[ ページ ] 1 2 3 4 5 6 7 8 9 10 11 ... Next -> #3942から#3899まで30件を表示しました。
■現在の記録記事数:3598件
[ 未読ポイント設定 ] 現在、「未読読み機能」は無効 になっています。
「未読読み機能」を有効にし、未読ポイントを設定するとその記事より新しい記事のみ表示することができます。
Myカスタマイズ で有効にできます。
Amazon.co.jp ウィジェット
トップ
- 前に戻る(B )
THE lg-Board REVOLUTIONS Copyright© 2004-2010 リトルグレイ