Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9837 / 13644 ツリー ←次へ | 前へ→

【25036】テキストボックスを利用した数字入力 えん 05/5/18(水) 17:04 質問[未読]
【25039】Re:テキストボックスを利用した数字入力 Jaka 05/5/18(水) 17:21 発言[未読]
【25104】Re:すみませんわかりませんでした(;O;) えん 05/5/20(金) 11:29 質問[未読]
【25110】Re:すみませんわかりませんでした(;O;) Jaka 05/5/20(金) 12:58 回答[未読]
【25130】Re:すみませんわかりませんでした(;O;) えん 05/5/20(金) 16:43 質問[未読]
【25131】Re:すみませんわかりませんでした(;O;) Jaka 05/5/20(金) 17:13 発言[未読]
【25162】Re:すみませんわかりませんでした(;O;) えん 05/5/23(月) 11:05 質問[未読]
【25165】もしかして・・・なんですが つん 05/5/23(月) 11:38 発言[未読]
【25172】Re:もしかして・・・なんですが えん 05/5/23(月) 14:44 発言[未読]
【25175】Re:もしかして・・・なんですが つん 05/5/23(月) 16:22 発言[未読]
【25177】Re:もしかして・・・なんですが つん 05/5/23(月) 17:24 回答[未読]
【25133】Re:すみませんわかりませんでした(;O;) ponpon 05/5/20(金) 20:49 発言[未読]
【25160】Re:すみませんわかりませんでした(;O;) えん 05/5/23(月) 10:49 発言[未読]
【25180】Re:すみませんわかりませんでした(;O;) ponpon 05/5/23(月) 20:30 発言[未読]
【25181】Re:すみませんわかりませんでした(;O;) ponpon 05/5/23(月) 21:10 発言[未読]
【25202】ponponさん みなさまっ ついに出来ました... えん 05/5/24(火) 10:29 お礼[未読]

【25036】テキストボックスを利用した数字入力
質問  えん  - 05/5/18(水) 17:04 -

引用なし
パスワード
   こんにちは。藁にもすがりたい思いで投稿します。

VBAのコントロールツールボックスから
テキストボックスを利用(名前:cost)
して数値を入力し規定のセルに次々と”値”を
表示する方法なのですが、

テキストボックスだからなのか
勝手にテキスト形式で表示されてしまい
セルの左端に 緑の▲マークが出てしまいます。
セルをクリックすると数値が文字列として保存されます 
とエラーまで表示されてしまいます。

次々と行ごとに値をかえして
結果合計金額を計算したいのですが
テキストだからか計算できません。

テキストボックスのプロパティを見てみては
いるものの VBA 初心者のため
分からなくなりました。

数字としてセルに埋めていくためにはどうすればいいのか
どなたか教えて頂けたら幸いです。

【25039】Re:テキストボックスを利用した数字入力
発言  Jaka  - 05/5/18(水) 17:21 -

引用なし
パスワード
   こんにちは。
どうやっているのかよく解らないけど、

Range("A1").value = TextBox1.value

ってやってみたらどうでしょうか?

【25104】Re:すみませんわかりませんでした(;O;)
質問  えん  - 05/5/20(金) 11:29 -

引用なし
パスワード
   ▼Jaka さん:
この場合
Range(表示先のセル指定).value = cost.value
となるのでしょうか。。。
超初心者になるため わかりませんでした。
可能であれば細かく教えてもらっていいですか?!
よろしく御願いします。

>こんにちは。
>どうやっているのかよく解らないけど、
>
>Range("A1").value = TextBox1.value
>
>ってやってみたらどうでしょうか?

【25110】Re:すみませんわかりませんでした(;O;)
回答  Jaka  - 05/5/20(金) 12:58 -

引用なし
パスワード
   ▼えん さん:
>この場合
>Range(表示先のセル指定).value = cost.value
>となるのでしょうか。。。
>超初心者になるため わかりませんでした。
>可能であれば細かく教えてもらっていいですか?!
もうちょっと正確に書くと
Sheets("シート名").Range(表示先のセル指定).value = cost.value

細かくといってもどこにあるテキストボックスなのか良く解らないので、VBAのコントロール・・・と言うことで、ユーザーフォーム上と思ってますが...。

ここなんか自分で試してみるといいと思います。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=11892;id=excel

【25130】Re:すみませんわかりませんでした(;O;)
質問  えん  - 05/5/20(金) 16:43 -

引用なし
パスワード
   申し訳御座いません(;O;)

Sheets("シート名").Range(表示先のセル指定).value = cost.value

 結局やってみたものの

テキストボックス cost に入力された数値が
全ての”Range(表示先のセル指定)”箇所に表示され
しかもセル数値はやっぱりテキストになり
左上に緑の▼が表示されました。

この緑▼を無くす(テキスト形式で表示されないようにする)
のみで良いのですが、、もしご存知でしたら教えていただけると幸いです。

【25131】Re:すみませんわかりませんでした(;O;)
発言  Jaka  - 05/5/20(金) 17:13 -

引用なし
パスワード
   実際のコードを載せてください。
文章だけだと良く伝わりません。

それと、ユーザーフォーム上のテキストボックスで良いんですよね。
それで、テキストボックスのオブジェクト名を「cost」に変えているんですよね。

>この緑▼を無くす(テキスト形式で表示されないようにする)
これって、EXL2003ですか?

【25133】Re:すみませんわかりませんでした(;O;)
発言  ponpon  - 05/5/20(金) 20:49 -

引用なし
パスワード
   こんばんは。
>この緑▼
は、バックグランドでエラーチェックを行っているときに、
前後の数式その他から勝手に判断して出すものだと思われます。
私は、じゃまくさいのでのけています。
のけ方は、
 ツール→オプション→エラーチェック
 バックグラウンドでエラーチェックを行う の
チェックをはずすと出なくなります。

このことでないのならごめんなさい。

【25160】Re:すみませんわかりませんでした(;O;)
発言  えん  - 05/5/23(月) 10:49 -

引用なし
パスワード
   ponpon さん
コメントありがとう御座います。
あの緑は表示させないことが出来たのですね。
勉強になりました。

ただ、今回の場合は表示を消したとしても
”数字・値”が入ったセルがテキスト形式で
入力されてしまうためSUM関数を使用しての
計算が出来ません。
恐らくVBのコードの書き方に問題があるとおもいますが・・・。
また何か御座いましたらご教授ください。

【25162】Re:すみませんわかりませんでした(;O;)
質問  えん  - 05/5/23(月) 11:05 -

引用なし
パスワード
   Jaka さん
こんにちは。
超初心者である私の質問の相談に乗っていただいて
本当にありがとう御座います。

お恥ずかしいながら、実はVBは余りよくわからないまま
コードを見よう見まねで書いています。
以下お言葉に甘えてコードを載せさせていただきます。
何か分かりましたら是非ともご教授いただけると嬉しいです。

エクセルVer 2002
実際の作成コード(’は説明)

’清算書作成

Private Sub CommandButton1_Click()
Dim varRag As Variant
Dim myArray As Integer

'j4(月), l4(日), cost(金額), p6(支社名),content(内容)

varRag = Array(Range("J4"), Range("L4"), cost, Range("P6"), content)
If cost <> Empty Then
  If Range("A5") = Empty Then
   'Range("A5").Select
   'Range("A5") = 1
    Range("B5").Select
    For myArray = 0 To 4
      With Selection
             .Offset(, myArray) = varRag(myArray)
      End With
    Next myArray
  Else
'A5のセルNoに何も入力されていない場合(初めての入力の場合)
’A5から始まるセル(実際の精算書シート)にArray入力
’その他は最後の行からデータを入力

    Range("B65536").End(xlUp).Offset(1).Select
      For myArray = 0 To 4
      With Selection
      .Offset(, myArray) = varRag(myArray)
      End With
      Next myArray
      End If
  'テキストボックスをすべて初期化します。
  cost = ""
  content = ""
  Else
'テキストボックスに名前を入力しないで登録を押した時に出すエラーメッセージです。
  MsgBox "入力して下さい"
  End If
End Sub
Private Sub CommandButton3_Click()
Range("B5:F21").ClearContents
Range("B5").Select
End Sub

'現在はココまでです。。。

'しかしながら実は、以下
'テキストボックスの値・数値がテキスト認識されて
'計算が出来ないのと同じように困っている箇所があります。
'もし可能であれば一緒に見ていただけると幸いです。

’他の難点)コマンド2をクリックすると
'現在アクティブなセルの行が一行削除される

'Private Sub CommandButton2_Click()
'ActiveCell.FormulaR1C1 = "ClearContents(R[-1]C:R[-1]C5)"
'End Sub


何卒よろしく御願いします(;O;)

【25165】もしかして・・・なんですが
発言  つん E-MAIL  - 05/5/23(月) 11:38 -

引用なし
パスワード
   こんにちは。横から失礼します〜〜

あの、もしかして、もしかして・・なんですが、
転記するセルの書式設定が、もとから「文字列」に設定されちゃってる!
なんてことはないでしょうか?
こちらで、アップされたコードを実行してみたところ、特におっしゃるような現象は出ませんでした。

ひとつ・・・
あまり丁寧にみてないですが、

>varRag = Array(Range("J4"), Range("L4"), cost, Range("P6"), content)

Valueプロパティを全て省略してますが、
省略しないで明記する方がいいみたいですよ。
その方が読みやすいような気もしますし・・・・

【25172】Re:もしかして・・・なんですが
発言  えん  - 05/5/23(月) 14:44 -

引用なし
パスワード
   つん さん

コメントありがとう御座います。
皆様のご意見が沢山あったほうが心強いデス(;O;)

さて、、転記するセルの書式設定は
文字列で設定はされておりません。
実際に今セルの書式設定であえて
数値にして実際コマンドを実行してみましたが、
すぐさま緑▼マークが出ます(テキスト形式になってしまいます)

>>varRag = Array(Range("J4"), Range("L4"), cost, Range("P6"), content)
>Valueプロパティを全て省略してますが、
>省略しないで明記する方がいいみたいですよ。
>その方が読みやすいような気もしますし・・・・

初心者のため見よう見まねVBになっています。
よかったら、省略しない明記の仕方を
具体的に教えていただけますか?

皆さん本当に恐縮ですがよろしく御願いします。

【25175】Re:もしかして・・・なんですが
発言  つん E-MAIL  - 05/5/23(月) 16:22 -

引用なし
パスワード
   えんさん^^

>さて、、転記するセルの書式設定は
>文字列で設定はされておりません。
>実際に今セルの書式設定であえて
>数値にして実際コマンドを実行してみましたが、
>すぐさま緑▼マークが出ます(テキスト形式になってしまいます)

んー、なんでかよくわかりませんねえ〜(>_<)
今、ちょっとバタバタしてるので、また時間が出来たら考えてみます。
その間に、達人な方々のレスが入るかも・・そっちを期待した方がええですね。


>初心者のため見よう見まねVBになっています。
>よかったら、省略しない明記の仕方を

Range("a1").Value
とか
TextBox1.Value

とかですね。Valueプロパティをヘルプで見てみてください。

【25177】Re:もしかして・・・なんですが
回答  つん E-MAIL  - 05/5/23(月) 17:24 -

引用なし
パスワード
   えん さん

えと、こちらでいろいろいじってみました。
そしたら、確かに「文字列」になってしまったり、
はたまた上手くいったり・・・って感じでした。
私も何がなんだかわからん・・・

こういうときは、

CLng(cost.Value)

というように、データ型変換関数を使えばええかな?と思います。
ほんで、その前に、テキストボックスに、「数値」が入ってるかどうか?
のチェックも入れた方がええかもしれません。

【25180】Re:すみませんわかりませんでした(;O;)
発言  ponpon  - 05/5/23(月) 20:30 -

引用なし
パスワード
   えんさん。
こんばんは。
Userform1にTextBox2個とCommandButton1で試しました。
cost.Valueは、D列に入力され、数値として表示されています。
環境は、WinXP EXCEL2003です。


以下コードです。

Private Sub CommandButton1_Click()
  Dim varRag As Variant
  Dim i As Integer
  
  varRag = Array(Range("J4").Value, Range("L4").Value, _
       cost.Value, Range("P6").Value, content.Value)
  If cost.Value <> Empty Then
    If Range("A5").Value = Empty Then
     With Range("B5")
      For i = 0 To 4
       .Offset(0, i) = varRag(i)
      Next i
     End With
    Else
     With Range("B65536").End(xlUp).Offset(1, 0)
      For i = 0 To 4
       .Offset(0, i) = varRag(i)
      Next i
     End With
    End If
    cost.Value = ""
    content.Value = ""
   Else
    MsgBox "入力して下さい"
   End If
End Sub

【25181】Re:すみませんわかりませんでした(;O;)
発言  ponpon  - 05/5/23(月) 21:10 -

引用なし
パスワード
   えんさん。
>Private Sub CommandButton1_Click()
>  Dim varRag As Variant
>  Dim i As Integer
>  
>  varRag = Array(Range("J4").Value, Range("L4").Value, _
>       cost.Value, Range("P6").Value, content.Value)
>  If cost.Value <> Empty Then
   MsgBox VarType(cost.Value)
     ' ↑       
    ’調べてみると、ここでは文字列型です。
    ’TextBoxだから当たり前か

>    If Range("A5").Value = Empty Then
>     With Range("B5")
>      For i = 0 To 4
>       .Offset(0, i) = varRag(i)
>      Next i
>     End With
>    Else
>     With Range("B65536").End(xlUp).Offset(1, 0)
>      For i = 0 To 4
>       .Offset(0, i) = varRag(i)
>      Next i
>     End With
>    End If
    MsgBox VarType(Range("D5").Value)
      ’↑
      ’ここで調べると数値として
      ’認識しています。エクセルが賢く変換しています。

>    cost.Value = ""
>    content.Value = ""
>   Else
>    MsgBox "入力して下さい"
>   End If
>End Sub

【25202】ponponさん みなさまっ ついに出来まし...
お礼  えん  - 05/5/24(火) 10:29 -

引用なし
パスワード
   ponpon さん

大変丁寧なご回答及びご説明
本当にありがとう御座いました。
感謝感激です!!おかげさまで出来ました(ノヘ;)

cost.Value と以下記述を一箇所追加するのみで
ちゃんと数値として認識され足し算ができました。

varRag = Array(Range("O7"), Range("J4"), Range("L4"), Range("P6"), content, cost.Value)

超初心者にも拘らずご丁寧に指導してくださったPonponさんを
はじめ皆様本当にありがとう御座いました☆

9837 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free