簡単な処理方法がわかりません。ご指導かださいませんか?
Public Sub Enter()
Dim col As Long
Dim row As Long
Dim SN As Long
col = ActiveCell.Column
row = ActiveCell.row
If (col = 1) Then
If (row > 2) Then
SN = CLng(Right(Cells(row - 1, col).Value, 3)) + 1
Cells(row, col).Value = "EP481200DD" & " 25013/" & Format(CStr(SN), "000")
End If
Cells(row, col + 1).Select
ElseIf (col = 2) Then
If (row > 2) Then
SN = CLng(Right(Cells(row - 1, col).Value, 3)) + 1
Cells(row, col).Value = "EP443800EE" & " 25013/" & Format(CStr(SN), "000")
End If
Cells(row, col + 1).Select
ElseIf (col = 3) Then
If (row > 2) Then
SN = CLng(Right(Cells(row - 1, col).Value, 3)) + 1
Cells(row, col).Value = "EP443901FG" & " 25013/" & Format(CStr(SN), "000")
End If
Cells(row + 1, 1).Select
ElseIf (col = 3) Then
Cells(row, row).Select
End If
End Sub
どうしたらいいでしょう?
Select Case Col
Case 1
略
Case 2
略
Case 3
略
Case Else
略
End Select
こんな感じでしょうか
ごめんなさい。
質問の意味を取り違えてました・・・
考えてみます。
なんかこのままでは文法エラーの気がします。
それに気がついた時点で思考停止いたしました(私の頭が)ので、
こんなんしか思いつきませんでした。
下記の所を関数にしてみる。
======== ここから
SN = CLng(Right(Cells(row - 1, col).Value, 3)) + 1
Cells(row, col).Value = "何かの文字列" & " 25013/" & Format(CStr(SN), "000")
======== ここまで
返信ありがとうございます。
ryさんの言う通りなんですよ。
そこMid関数を使って文字列を何個目まで指定すればいいんですが、その仕方をVBAのヘルプを見ても参考になりませんでした…
この処理で何をやりたいのか分かりません。
回答できるかは分かりませんけど、出来れば説明を加えて下さい。
ソースだけ書かれても読む気しないし……。
>そこMid関数を使って文字列を何個目まで指定すればいいんですが、その仕方をVBAのヘルプを見ても参考になりませんでした…
これもよく意味が分かりませんね(^^;
ところで一番下のElseIf文は絶対通らないと思いますけど、良いんですか?
ElseIf (col = 3) Then
Cells(row, row).Select
End If
nanasiさん、レスありがとうございます。確かに上のモジュールじゃ意味がわかりにくいですね。すいません。
A1からO1(横1列)に日付やら出荷日、仕様、型番などを明記しています。
A2からO2にはそれらに対する日時や番号などを明記しています。
Enterを押すことでカーソルが横に、ドンドン上の値の+1や日付を出します。
問題①:ここで日付が変わったり、EP4812DDがEP4812DEになった時に上の値を参照してくれません(”E
P4812DD”としているから)。
問題②文章も長いのでMid関数などを使って文章をまとめたい。
今はこんなことに挑戦しています。
>問題②文章も長いのでMid関数などを使って文章をまとめたい。
見た所、文章が長いとは感じませんが…
だいだい、どうゆう意味合いで文章が長いと判断するんでしょうか?
処理すべき内容が解らない事には短くしようが無いのですが…
Mid関数を使うにしても、どのような文字列処理をしたいのか解らないとアドバイスしづらいです。
厳しいようですが、これ見て!、どう思う?、こうしたい!
だけでは解答率も下がりますよ。
できれば、開発環境、全体的な内容、何処で悩んでいるのか、結果的にどうしたいのか?等できる限りの情報を提供して頂かないと…
私たちはサナさんのソース全部を見ている訳ではないですし…
ですよね。
これをセンス溢れる文章を作りたいのですが…
初心者なので早くマスターしたいと焦ってました。
とにかくまとまったかたちにしたいです。
どのようにまとめたいのかを明確にして頂くと、答えようが有るのですが…
例えば、
Cells(row, col).Value = "EP481200DD" & " 25013/" & Format(CStr(SN), "000")
の"EP481200DD"はパターンがあって、セルの位置によって内容をこう表現したいとか…表現の仕方によってはあえて関数にする必要が無い時もありますし。
ぱっと見た感じ、
SN = CLng(Right(Cells(row - 1, col).Value, 3)) + 1
はどの条件でも使われていますから、
row = ActiveCell.row
の下にでも置いたほうが良いですね。それだけで、2行減ります。
パターンさえ解れば、
row = ActiveCell.row
以下の行を関数化できますけどね・・・
Cells(row, col).Value = "EP481200DD" & " 25013/" & Format(CStr(SN), "000")
の"EP481200DD"はパターンがたくさんあって、
EP44450DC"やEP473500EE"もあります。
初めの10桁はセル内に残し(代入)みたいな形にしておき折り返しの全体表示をして、25013/OOOみたいにします。(セル番地1個内のみ)
ここで型番と言う事にして、この型番も"EP44450DC"変わることもあるので、その変わった時の値を参照して変わった値を、次のセルに代入したいのです。
うーーん、そのパターンを説明して欲しいなぁ…
たとえば、適当なのか、順番があるとか…
結局のところ、型番はどうやって定義しているのですか?
クリリンさんありごとうです。
型番はもともと決まっています。
でも、手違いがあればごくたまに変わる時があります。
型番 型番
EP433501AA 25013/001 EP409000EE 25013/002
EP433501AA 25013/002 EP409000EE 25013/003
・ ・
・ ・
・ ・
EP433501AA 25013/100 EP409000EE 25013/101
こんなのがいっぱい横に並んでいます。ここで手違いがあり
EP433501AB 25013/001 EP409000EE 25013/002
EP433501AB 25013/002 EP409000EE 25013/003
・ ・
・ ・
・ ・
EP433501AB 25013/100 EP409000EE 25013/101
このようになったりします。
この場合を想定したプログラムが要求されます。
そんなときのためにどうしたいいかを試行錯誤していま。
ごめん、ハッキリ言って、何が言いたいのかが解らないっす
_(._.)_
なんの手違いなの?
見たところ、「EP433501AA」が「EP433501AB」になってるとしか見受けられないのですが…
それに、「EP433501AA」や「EP409000EE」等、何処からの情報ですか?
ファイルですか?データベースですか?
全体的な説明無しに言われても漠然としすぎて…
仕様書とか無いの?
こちらが質問しないと駄目なの?
力になってあげたいけど、これでは無理っす!
>問題①:ここで日付が変わったり、EP4812DDがEP4812DEになった時に上の値を参照してくれません(”EP4812DD”としているから)。
もしかして、セルの中身を取得したいの?
セルでも何のセル?エクセル?グリッド?データベース?
それぞれ取得方法が違うので、環境をして欲しいっす!
すいません。口で言うのは簡単なのですが、いざ掲示板にかけと言うには難しいです。
まことにご迷惑をおかけしました。
少し考えてみます。
ツイート | ![]() |