• ベストアンサー

Excel VBAについて

セルAG列(AG12以降)に許可証NOが入っており、その数値(ランダム)から最大値を求めて、 最大値 + 1の値をUserForm1のTextBox1に代入したいと思っています。 lastrw1 = Sheet1.Range("AG11").End(xlDown).Row A = Application.Max(Sheet1.Range(Cells(12,33),Cells(lastrw1,33))) TextBox1.Text = A + 1 許可証NOが「1」「2」・・・と数値であれば上記ロジックで問題なく動くのですが、許可証NOは「001」「002」と3桁で表示したいため、 登録の歳、許可証NOは「'001」という形式でセルAG列に登録しています。 そのため、文字列として認識され、上記ロジックではうまく動きません。 どのようにしたらよいのかご教授下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • Stiltzkin
  • ベストアンサー率42% (119/283)
回答No.1

問題はもちろんここですね。 > TextBox1.Text = A + 1 変数Aは文字列ですから+1の計算はできないです。VBAでも解決できるのですが、面倒です・・・・・。簡単なのは、許可証NOのセルを数値にして、なおかつ常に三桁で表示させるようにすることではないでしょうか。 セルの書式設定で、[表示形式]-[分類]でユーザー定義を選択し、種類の欄に「000」と入力。すると、数値で「1」を入力すると「001」と表示されます。これで上記のコードを走らせれば動くように思うのですが、どうでしょうか。

その他の回答 (1)

  • nekoron07
  • ベストアンサー率37% (69/184)
回答No.2

#1さんが言うように、VBAはそのままで、AG列のデータを数値化する方が早そうですね。 その際の処理としては、一時的に処理用としてAG列の右側に一列挿入し、その列のAH12のセルに、 =VALUE(AG12) と入力して最終行までコピーします。 その後AH12からデータ最終行までをコピーし、AG12のセルで右クリックして「形式を選択して貼り付け」→「値」でOKとすると一括して変換できます。(最後に処理用の列(AH列)は削除してください) その後にAG列の書式を「ユーザー定義」で「000」とすれば、数値のままで「001」のように表示されます。

関連するQ&A