![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_08.png?5a7ff87)
下記の様なマクロを書いていますが、別のマクロの記述の仕方で短縮に書くことはできないでしょうか。
Sub 承認捺印()
Sheets("実行").Select
If Range("E13").Value = "申請者" Then
Sheets("ログイン").Select
If Range("F11").Value = "a8012661" Then
Sheets("印章").Select
ActiveSheet.Shapes("Picture 15").Copy
Call 申請者捺印
End If
If Range("F11").Value = "a6601456" Then
Sheets("印章").Select
ActiveSheet.Shapes("Picture 16").Copy
Call 申請者捺印
End If
If Range("F11").Value = "t9907028" Then
Sheets("印章").Select
ActiveSheet.Shapes("Picture 17").Copy
Call 申請者捺印
End If
If Range("F11").Value = "a7545410" Then
Sheets("印章").Select
ActiveSheet.Shapes("Picture 18").Copy
Call 申請者捺印
End If
If Range("F11").Value = "t9806047" Then
Sheets("印章").Select
ActiveSheet.Shapes("Picture 19").Copy
Call 申請者捺印
End If
If Range("F11").Value = "t0206030" Then
Sheets("印章").Select
ActiveSheet.Shapes("Picture 20").Copy
Call 申請者捺印
End If
end if
end sub
Sub 申請者捺印()
Sheets("報告票").Select
Range("m3").Select
ActiveSheet.Paste
Range("a1").Select
End Sub
No.2ベストアンサー
- 回答日時:
できれば、捺印は、Copy よりも、jpg などの別ファイルにして、挿入したほうが問題が少ないです。
私の経験では、オブジェクトの貼り付け削除の繰り返しを千回以上になると、時々、トラブルを起こすことがあります。
また、Option Base の 1 とは共用する場合は、
myValue = Array(.. , .. , ..)
lastindex = UBound(ar) - 1
ReDim Preserve myValue(0 To lastindex)
とひとつずらすか、"Picture " & i + 14 にしてください。
'<標準モジュール>
Sub 承認捺印()
Dim myValue As Variant
Dim ShapeName As String, i As Long
'配列による設定
myValue = Array("a8012661", "a6601456", "t9907028", "a7545410", "t9806047", "t0206030")
If Sheets("実行").Range("E13").Value = "申請者" Then
For i = LBound(myValue) To UBound(myValue)
If Sheets("ログイン").Range("F11").Value = myValue(i) Then
ShapeName = "Picture " & i + 15
Sheets("印章").Shapes(ShapeName).Copy
With Sheets("報告票")
Application.Goto .Range("m3")
.Paste
'オブジェクトが見えなくなることがあるのでVisibleをTrue
.Shapes(ShapeName).Visible = msoTrue
.Range("A1").Select
Exit For
End With
End If
Next
End If
End Sub
No.3
- 回答日時:
(1)まずマクロの記録に由来するかと思うSELECTはやめてはどうですか
Sheets("ログイン").Select
If Range("F11").Value = "a8012661" Then
はSheets("ログイン").Range("F11")= "a8012661" Then
(2)VALUEも省略しては
反対のかたもいるかも知れないが。
(3)私はARRAYを2つ作り、同順序に並べてよくやります。
a=Array("a8012661","a6601456",・・・)
b=Array("15","16",・・・)
aを探して何番目かわかった場合にbの何番目かのデータを取るという風に。
あまり数が多いと使いませんが。
多いときは対応表をファイルとしてもち、最初に読んで配列に入れて同じことをやります。
No.1
- 回答日時:
こんなもので如何
Sub 承認捺印()
Sheets("印章").Select
If Worksheets("実行").Range("E13").Value = "申請者" Then
Select Case Worksheets("ログイン").Range("F11").Value
Case "a8012661"
ActiveSheet.Shapes("Picture 15").Copy
Case "a6601456"
ActiveSheet.Shapes("Picture 16").Copy
Case "t9907028"
ActiveSheet.Shapes("Picture 17").Copy
Case "a7545410"
ActiveSheet.Shapes("Picture 18").Copy
Case "t9806047"
ActiveSheet.Shapes("Picture 19").Copy
Case"t0206030"
ActiveSheet.Shapes("Picture 20").Copy
Case Else
Exit Sub
End Select
Call 申請者捺印
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ビジネス文書?で「御署名・御...
-
先生に捺印をお願いしたいとき...
-
自分と上司が捺印する場合、ど...
-
【ビジネス】お詫び状の書き方
-
合議押印の順番について
-
押印してもらった印鑑を濃くす...
-
押印の数え方 (印鑑の数え方...
-
不動産屋さんに不信感を抱いて...
-
契約書:住所はPC入力しても大...
-
印鑑を押す位置
-
i委任状はサインだけで印鑑は不要
-
押印と捺印の違いは?
-
相手の会社に書類を送った時に...
-
契約書の製本方法
-
注文請書 丸印 角印 発注書に注...
-
議事録署名の順番
-
『ご捺印願います』?
-
契約書の捺印箇所について
-
出来ましたら不動産会社にお勤...
-
年次休暇の申請書について
おすすめ情報