Sub 要具ライフ()
ActiveSheet.Cells.Find(what:="TOPゴム").offset(0,3) = ActiveSheet.Next.Cells.Find(what:="TOPゴム").Offset(0, 3).Value + 1
End Sub
上記のコードで、選択している隣のシート中にある特定の文字の下のセル内の数値に加算した値を選択しているシート中の同じ文字の下のセルに入れたいのですが実行できません。
シートを新しく作った時、隣のシートの行数が挿入するなどで変更される場合があるため行位置が一定でありません。よって、特定の文字のセル位置から出力するセルを探したいです。
どなたか、教えていただけないでしょうか?
No.1
- 回答日時:
こんにちは
なさりたいことの説明が曖昧なので、正確に何をなさりたいのかわかりませんけれど、ご提示のコード自体は実行可能なものと思いますので、想定通りの状態であれば記述の通りに処理されるはずです。
ただし、シートの状態等によっては、エラーが発生する可能性が多々ありそうに見受けられます。
FINDメソッドで「TOPゴム」という文字列を含むセルを探していますが、該当セルが存在しない場合、あるいは、複数存在する場合にどうするのか記述されていません。
特に、該当セルが存在しない場合にはエラーが発生します。
また、シート内の全セルから検索していますが、対象セルが列などを限定できるのなら、対象範囲を絞っておいた方が確実と言えるでしょう。
>シート中の同じ文字の下のセルに入れたい
とありますが、offset(0,3)は「下のセル」を意味してはいません。
(右へ3セル移動したセルになります)
FINDでヒットしたセルが、シート全体の右から3列以内にあると、「その3列右のセル」は存在しないことになるので、エラーになると考えられます。
式の右辺に関しても同様ですが、上記以外にも、
ActiveSheetが一番右側のシートの場合には、Nextが存在しないのでエラーになります。
更には、探索したセルの値が数値ではない場合には加算ができないので、エラーになります。
どのような状態で使うのか不明ですが、上記のような可能性が全くないと保証されているのなら問題はありませんけれど、「エラーを起こさないマウロ」を作成するおつもりなら、このあたりのチェックと処置を加えておく方が宜しそうに思います。
>実行できません。
というのが「エラーが発生する」という意味なのか、「実行はできるが思った内容と違う」という意味なのか不明ですけれど、エラーが発生するのなら、まずは、上記の内容あたりをチェックしてみてください。
「思った通りの処理にならない」という場合は、ご質問文からは「何がしたいのか」が具体的には読み取れないので、こちらでは判断がつきかねます。
抽象的には、ご質問文の内容のようなコードになっていますし、実行条件が想定通りなら、問題なく実行できるコードになっています。
No.2ベストアンサー
- 回答日時:
No1です。
>使用していない道具の使用日数は”-“と表示しているため
>加算できなくエラーとなります。
>この場合、どのようなコードが必要でしようか?
コードを考える前に、まずどのように処理をしたいのかを具体的に整理してみてください。
例えば、「補足」にご提示の内容の例で考えてみれば、
1)値が数値かどうかをチェックする
2-1)数値の場合は、Aの処理(=加算?)を行う
2-2)数値でない場合は、Bの処理(=記載が無いので不明)を行う
のような感じでしょうか?
(当方にはどうなさりたいのかわかりませんので、上記は一般的な例です)
このような感じに整理してから、それをコード化すれば宜しいでしょう。
>ifとか使っても上手くいきません。
IFで条件分岐すれば済むと思います。
「値」が数値かどうかは、IsNumeric関数で評価できますので・・
https://learn.microsoft.com/ja-jp/office/vba/lan …
IF IsNumeric(値) Then
Aの処理
Else
Bの処理
End IF
のような形式にすれば、上記の内容をコード化することができると思います。
No1に挙げた、その他の部分でもエラーが発生する可能性はありますので、質問者様にとっては「どうでも良い問題」かも知れませんけれど、順に潰しておいた方が宜しいとは思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 文字列のセルを反映させたいです 2 2024/02/24 00:06
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。 1 2024/01/08 16:23
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Excel-VBAのmsgBox()の不思議
Visual Basic(VBA)
-
VBA SaveChanges 上書きされない
Visual Basic(VBA)
-
VBA 複数条件の分岐処理の上手な方法
Visual Basic(VBA)
-
-
4
Excel VBA 定義されたプロージャ名、関数名の取得
Visual Basic(VBA)
-
5
以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが
Visual Basic(VBA)
-
6
VBA listBoxについて
Visual Basic(VBA)
-
7
Vba SelStart、SelLen教えてください教えてください
Visual Basic(VBA)
-
8
現在のブックを閉じないで、マクロ抜きの(現在のブックの)コピーを作成したい
Visual Basic(VBA)
-
9
ExcelVBAのFindFirstエラーについて
Visual Basic(VBA)
-
10
エクセルVBAの配列について
Visual Basic(VBA)
-
11
VBAのコードを教えてください
Visual Basic(VBA)
-
12
VBのWPFとはなんでしょうか?
Visual Basic(VBA)
-
13
【ExcelVBA】インデックスが有効範囲にありません。の理由が分かりません
Visual Basic(VBA)
-
14
エクセルVBAにて =A1=B1とすれば A1とB1のセル内容が一緒だった場合 TRUE 違っていれ
Visual Basic(VBA)
-
15
VBAに詳しい方教えてください。
Visual Basic(VBA)
-
16
左右の表のキー位置を合わせたい
Visual Basic(VBA)
-
17
Excelにてある膨大なデータを管理しています。 そこで、特定の市町村にのみ色を付けたいです。 Ex
Excel(エクセル)
-
18
Excelにて数式を使用して 工数計算をしたいのですが、 計算方法が分からないので教えて下さい。 1
Excel(エクセル)
-
19
VBA バックグラウンドで別ブックを開いてデータ転記
Excel(エクセル)
-
20
VBAで各列の+"と"o"の合計数を数え3行目と4行目に入力したい"
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
VBAでセルをクリックする回...
-
VBからEXCELのセルの値を取得す...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
【Excel】指定したセルの名前で...
-
Sub 要具ライフ() ActiveSheet....
-
任意フォルダから画像をすべて...
-
i=cells(Rows.Count, 1)とi=cel...
-
【VBA】飛び飛びの3セルに"完了...
-
Excel VBAで比較して数値があっ...
-
Excel VBA、 別ブックの最終行...
-
【Excel VBA】指定行以降をクリ...
-
TODAY()で設定したセルの日付...
-
エクセル(Excel) ワイルドカー...
-
EXCELで変数をペーストしたい
-
エクセルVBAで、シート上で結合...
-
ExcelのVBAで数字と文字列をマ...
-
VBAの計算で@が出てしまう件
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
Excel VBA、 別ブックの最終行...
-
EXCELで変数をペーストしたい
-
Excelのプルダウンで2列分の情...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
DataGridViewの各セル幅を自由...
-
Sub 要具ライフ() ActiveSheet....
-
【EXCEL VBA】Range("A:A").Fi...
-
VBAを使用した時間管理
-
VBAでセルをクリックする回...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
おすすめ情報
fujillinさん、ご回答ありがとうごさいました。
再度、何をしたいのか説明します。
シートには、各道具の使用日数を入力している表があります。毎日、シートを更新するためにブランクの表が書いているシートをコピーしています。
前日の表から、各道具の使用日数をカウントしたい(加算)したいのですが、表の行を挿入する場合がありまして、前日の表からそのまま参照ができないため、各道具の名称が書いているセルの位置から使用日数が入力しているセルの数値を取得したいと思っています。
しかし、使用していない道具の使用日数は”-“と表示しているため加算できなくエラーとなります。
この場合、どのようなコードが必要でしようか?
初心者ですので、ifとか使っても上手くいきません。
申し訳ありません、教えていただけないでしょうか?
fujillinさま、ありがとうごさいます。
右隣のシートの表の中に、列方向に道具の名称が入力しています。各道具のセルの下のセルに使用日数を入力しています。
入力日が変わると、ブランクの表があるシートをコピーしていきます。常に右隣のシートが前日入力したシートとなります。
前日のシートの表から、各道具の使用日数に一日分加算された日数を当日のシートに出力したいです。
例えば、前日のシートの表の使用日数が35日なら、当日のシートに使用日数は36日と出したいです。前日のシート表の行数が変化するため、相対参照できません。