Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8.1 Pro : Excel 2010)
ユーザーフォームからシートへ転記、数値のセルに文字列で保存
投稿日時: 18/12/26 17:39:02
投稿者: ぽっぺん

 お世話になります。
 ユーザーフォームからシートへ転記、転記したシートのセルは数値で表記したいのですが、文字列で保存されてしまいます。
 数値で、転記する方法をご教授お願い致します。
 
 ユーザーフォーム転記(登録CommandButton1)コード
 
 With WorkSheets("データ")
  Dim TargetRow As Integer
  TargetRow = .Range("A65536").End(xlUp).Offset(1).Row
  .Range("A" & TargetRow).Value = TextBox1
  End With
 
 1 ユーザーフォームTextBox1、fmImeMode、1ModeOn、2ModeOff、3〜8を試しました。
 2 転記先"データ"シートA行は、書式設定数値(整数)にしてあります。
 
 よろしくお願いします。
 

回答
投稿日時: 18/12/26 18:12:44
投稿者: WinArrow
投稿者のウェブサイトに移動

テキストボックスの「値」が、数字ならば、
数値化について、きをつけなければ行かないことはないと思います。
 
テキストボックスの「値」は、どのようになっていますか?
例示して見てください。
 
コードの記述方法を添削しておきます。
まず、インデントをキチンとつけましょう
変数宣言は、プロシジャの先頭に定義しましょう
 
Private Sub CommndButton1_Click()
Dim TargetRow As Long
    With WorkSheets("データ")
       TargetRow = .Range("A" & .Rows.Count).End(xlUp).Offset(1).Row
       .Range("A" & TargetRow).Value = Me.TextBox1.Text
    End With
End Sub
 
もう少しスマートに
行番号を取得する変数は不要
Private Sub CommndButton1_Click()
    With WorkSheets("データ")
       .Range("A" & .Rows.Count).End(xlUp).Offset(1).Value = Me.TextBox1.Text
    End With
End Sub
 
 
 

回答
投稿日時: 18/12/26 18:23:04
投稿者: mokutachi

× .Range("A" & TargetRow).Value = TextBox1
 
〇 .Range("A" & TargetRow).Value = TextBox1.Value
 
理由はわすれました。

回答
投稿日時: 18/12/26 18:37:05
投稿者: WinArrow
投稿者のウェブサイトに移動

mokutachi さんの引用:

× .Range("A" & TargetRow).Value = TextBox1
〇 .Range("A" & TargetRow).Value = TextBox1.Value
 
理由はわすれました。

 
ホントだ!!
 
テキストボックスのデフォルトプロパティは、
Text
になっています。
セルの表示形式を標準にしておくと
どちらでも数値で代入されます。

回答
投稿日時: 18/12/26 19:53:46
投稿者: WinArrow
投稿者のウェブサイトに移動

↑のレスは間違いです。
 
テキストボックス
のデフォルトプロパティは、Valueが正解です。
 
テキストボックスのプロパティを省略しないことです。
TextでもValueでもどちらでもよい。

投稿日時: 18/12/27 11:33:09
投稿者: ぽっぺん

ありがとうございます。
「テキストボックスのプロパティ省略しない。」
勉強になりました。
 
Win Arrowさん、mokutachiさんありがとうございます。
感謝いたします。