私はプログラムが苦手なのですが、測定した濃度プロファイルをプログラムにより補正する必要性にかられています。Part2にプログラムを示しました。しかし、これではうまく走りません(プログラム初心者(ただいま勉強中です。))

私がしたいのはテキストファイルから数値列(一列400行程度で値は2.1523e+19など)を読み込み、
h = h + (Data(i + 1) * Exp(-((i - surface + 1) * step) / ramda) + g) * step / 2
g = Data(i + 1) * Exp(-((i - surface + 1) * step) / ramda)
z = CSng(h / ramda * (1 - Exp(-(step * (l - surface) / ramda))))
という式をつかって計算し、その計算結果をテキストで出力することです。

いろいろ本を見て調べているのですが、なかなかうまくいきません。
まず分からないのがテキストファイルから数値を入力しそれを配列にして計算するってことがよく分かりません。そして、計算された出力値を出力する関数が分かりません。いろいろ試しているのですが、うまくいきません。

プログラムに詳しい方、どなたか以下のプログラムの間違ってるところを指摘し、訂正して頂けませんか?よろしくお願いします。
また、デバックの使い方がよく分かりません。教えていただけませんか。

A 回答 (1件)

管理者より:


続きの質問があるのでそちらをご参照下さい

参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=89258
    • good
    • 0
この回答へのお礼

どうも手続き有難うございました。
ところで、自分がした質問を消去するにはどうしたらいいのでしょうか?

お礼日時:2001/06/18 02:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q4桁の数字を A*1000+B*100+C*10+D 以外で表現したい。

A=1
B=2
C=3
D=4

のとき 
1234をA*1000+B*100+C*10+D以外で表現したいのですが
何かいい方法がないでしょうか?
4桁ならいいんですが
15、6桁を10行ぐらいコーディングしないといけないのでなえてます↓助けてください。

Aベストアンサー

No.4です。

VB2005でも問題なくできますよ。実際に確認済みです。

Dim A As Integer = 1
Dim B As Integer = 2
Dim C As Integer = 3
Dim D As Integer = 4
Dim E As integer

E = (A & B & C & D) * 1
MsgBox(E)

これで試してください。

Q1+(1+2)+(1+2+3)....+(1+2+...+N)の計算式をVBで・・

表すにはどうしたらいいでしょうか。
もう3時間くらい格闘しているのですが、
答えを出せません。

Dim S AS LONG
DIm N As Integer

Dim i As Integer
N = Val(TextBox1.Text)

S = 0
i = 1

For i = 1 To N Step 1
S = S + i

Next

Label4.Text = Format(S, "#,##0")

で、1+2+3+...+Nはいけるのですが、
上記の式は、Nが1づつ増えていくにしたがって、
Sの値が1 4 10 20 ...となっていくために、…。

どなたか、回答していただける方がおりましたら、
非常に助かります。
よろしくお願いいたします。。

Aベストアンサー

  Dim total    As Long
  Dim index    As Integer
  Dim index2   As Integer
  Const MAX_VALUE As Integer = 3
  '
  total = 0
  For index = 1 To MAX_VALUE
    For index2 = 1 To index
      total = total + index2
    Next index2
  Next index
  '
  MsgBox (total)
------------------------
こんなカンジでしょうか。

Q1/2とか2/4という文字をCSVで出力したい

1/2 とか2/4 という文字列(2つのうち1つ目、4つのうち2つ目とかの意味で日付ではありません)をCSVで出力したいのですが、エクセルでファイルを開くと 日付になってしまいます。

1/2のまえに「’」を付加させて出力し、ファイルをエクセルで開くと日付にはなりませんが、’1/2 と表示されます。1/2と表示させるにはどうすればいいんでしょうか?
ちなみに2/200とか日付ではありえない文字列の場合は意図する表示になります。

言語 Visual Basic 2010 Express  ちなみにエクセルのバージョンは2010 

以上 よろしくお願いします。

Aベストアンサー

どこかで見かけ方法。

文字列,数値,日付
="1/4",+1/4,1/4

Q時間計算の関数(csng)

 時間計算を数字に置き換えて演算処理をする関数で  csng、cdataという関数があると聞きましたが、引数
はどのように設定するのですか。
 また、昼の12時と夜中の12時はどのような値を持つ
のですか。
 時間計算で困っています、どなたかわかる方是非宜し
くお願いします。
 もっと他に使いやすい関数があれば教えてください。

Aベストアンサー

>があると聞きましたが
両方ともあります。
>時間計算を数字に置き換えて
CDateはそれだと思いますが、CSngは必ずしも、時間計算のものに限らないと思います。
>引数はどのように設定するのですか。
他と同じく()内に入力(指定)します。
個数は1つ。
CDateは数、CSngは任意の数式か文字列式となってます。
CDateの引数は日付シリアル値である範囲の数値である必要があります。
0を超えて(マイナス値はダメ)ない数はダメ。大きいほうは、制約が
今わかりませんが、360万までは大丈夫でした。(9839/12/6)西暦9900年までかも知れない)
時刻値は24時間を1としますので、0時が0.024時が1.0になりますので
昼の12時はその日の日付シリアル値+0.5です。
>時間計算で困っています
X日後は日付シリアル値+xで、両日の日数差は2つの日付シリアル値の引き算で、求められます。
後はFormat等の書式に任せればよい。1989/1/5の10日後は
昭和64年1月5日
平成1年1月15日
となりますが、表示形式のありがたさのおかげです。
数値的には32513 に10を足して32523としてくれたに過ぎません。
時刻についても、おなじです。ただし時間部分(小数点以下)の和が24時間を
超えると1日に繰り上がります。
>もっと他に使いやすい関数があれば教
日付シリアル値というのは、実に知恵の働いた概念だと思います。一般的には使いやすいもののはずです。
もっと使いやすいというのは、この点について知らないか食わず嫌いではないですか。特殊なケースでもっと便利な考え方があるかもしれませんが、どんな問題か質問には書いてない。
時刻も同じです。
時間計算で合計が日に繰り上がるのが都合が悪いとかの質問は、エクセルで表示形式を[h]:mmなどにすべきの問題として、たまに出てきます。それと同類かな。
何か上記のような回答は質問者の本質問に役立たない気がする。
エクセルの例ですが
http://asugi23.web.infoseek.co.jp/excel/soft36.htm#日付・時刻の計算
の(時刻値を使わず)「時刻を数値で計算する」あたりのややこしさにぶちあたっているのかな。
困っている時間計算の問題を具体的にずばり書いてください。

>があると聞きましたが
両方ともあります。
>時間計算を数字に置き換えて
CDateはそれだと思いますが、CSngは必ずしも、時間計算のものに限らないと思います。
>引数はどのように設定するのですか。
他と同じく()内に入力(指定)します。
個数は1つ。
CDateは数、CSngは任意の数式か文字列式となってます。
CDateの引数は日付シリアル値である範囲の数値である必要があります。
0を超えて(マイナス値はダメ)ない数はダメ。大きいほうは、制約が
今わかりませんが、360万までは大丈夫でし...続きを読む

Qテキストファイルへの出力方法

テキストファイルへログを出力したいのですが、
VBの記述がわかりません。

やろうとしていることは、
・Excelオープンと同時にログファイルをオープン
・ボタン押下時にログファイルに出力
です。
ファイルのオープンでは
 'ワークブック オープンイベント
Dim fs1, a As Object
Set fs1 = CreateObject("Scripting.FileSystemObject")
Set a = fs1.CreateTxtFile("ログファイル名", True)
と記述し、出力時には
 'ボタンクリックイベント
   a.WriteLine("出力文字列")
として出力をしようと思うのですが、
プロシージャが違うためか、出力時に
「オブジェクト変数またはWithブロックが定義されていません」とのエラーが出てしまいます。
Withブロックの定義は正しく書かれてあります。
どうやって回避できるでしょうか?
宜しくお願いします。

Aベストアンサー

私はEXCELではVBをあまり使わないので専門外ですが

(1)CreateTxtFile は 正しくは CreateTextFile
ではないでしょうか。
(2)Dim宣言をするのは VBでは標準モジュールなのですがEXCELの場合はWorkBookのGeneralですね。
これは Dim宣言した関数 aが認識されていないと
いうことではないですか。 VBの場合は Dimの代わりにPublicを使用します。 ボタンのあるシートにではなく Workbookのモジュールにイベントを書いたらどうなりますか。

違っていればごめんなさい


このカテゴリの人気Q&Aランキング

おすすめ情報