あと、ここよりエクセル総合質問スレの方が親切な気がする。 0167デフォルトの名無しさん2018/06/05(火) 22:13:04.46ID:OTFnbEJY つーかそんだけ条件はっきりしてんならちょっと考えたらわかるやろ。しかもほとんど自力でって言ってんだし 0168デフォルトの名無しさん2018/06/06(水) 01:08:15.90ID:E+CHUf1c>>160 見かけ上は空白セルということは実際の値は何でしょうか、例えば文字列""であるとか。 自動実行は>>163のURLが分かりやすいですが、もし文字化けしているのならばWorkSheet changeで調べると良いかと思います。 0169デフォルトの名無しさん2018/06/06(水) 04:28:37.07ID:CT76euXG>>164の意味がわからない うちでは>>163のリンク先は普通に見えてるけど、文字化けして読めない環境の人もいるってこと? 0170デフォルトの名無しさん2018/06/06(水) 08:35:29.70ID:dirBD7kG 質問 再利用性高いプログラム書いたとしてそれをどこに保存してどう活用するの。 例えば〇〇出来るマクロ作れ!言われてファイル開く部分は前作ったsubプロシージャで良いなと思っても今は前のソースからコピペしてる クソなことしてる自覚はあるけどどうすればクソ脱却するか分からん 0171デフォルトの名無しさん2018/06/06(水) 08:41:20.51ID:1qUEGpfN>>169 MIMEの文字コード種別の記述と実際の文字コードが違うとかあると、ブラウザによっては文字化けするよ。 0172デフォルトの名無しさん2018/06/06(水) 09:47:21.88ID:zTT9nffr>>169 lPhoneのJanestyle アプリで開いたから文字化けしてた 流れ的に高度なネタなのか判断が出来なかったので 0173デフォルトの名無しさん2018/06/06(水) 10:32:45.85ID:cIbpUMGv >160 計算式が入っているってどういうことだろう 0174デフォルトの名無しさん2018/06/06(水) 10:47:00.30ID:E+CHUf1c>>170 Runで呼び出すのはどうでしょう 0175デフォルトの名無しさん2018/06/06(水) 11:44:10.21ID:EAoXenc1>>169 原因は>>171なんだろうけど大抵のブラウザはMIME無視して文字コードを指定して表示する方法がある そんなことも知らないで>>164みたいなレスする奴のレベルは知れてるから相手しなくていいよ 0176デフォルトの名無しさん2018/06/06(水) 12:12:22.29ID:gabeefJ7>>170 C#かVB.NETでCOM dllを作ってシステムに登録 ブックから参照の追加で↑を再利用 かな addinでもいいんだろうけど使いにくかったので俺はaddinの利用をやめた 0177デフォルトの名無しさん2018/06/06(水) 13:14:46.89ID:1VAtV2oI>>176 addinてなんだっけ? 自分はexamの運用で特に不自由感じてないけど、使い方によってデメリットあるのかな 0178デフォルトの名無しさん2018/06/06(水) 14:59:12.02ID:Loe1X+88 クッソ、さっきから頭の中で小さな男女が楽しそうにマイムマイム踊ってやがる。 0179デフォルトの名無しさん2018/06/06(水) 17:28:57.66ID:r8NrOT0a 俺なんて引き出し開けたら大名行列がいたぞ 0180デフォルトの名無しさん2018/06/06(水) 17:56:03.28ID:JJ061DfG トイレの中に魔法使いがいる 0181デフォルトの名無しさん2018/06/06(水) 20:52:40.89ID:qbv3xFkn 机からメス猫形ロボットが出てきた 0182デフォルトの名無しさん2018/06/07(木) 00:52:14.51ID:l2af3llu シートをコピーして名前を付けるときにすでにそのシート名が存在し、重複した場合、メッセージとして、"既にその名前のシートは存在しているのでコピーしません。" とメッセージボックスに表示し、シートをコピーしないようにしたいのですがどのようにすればよいのでしょうか。 現状は、重複する場合、コピーの元となったシートに(2)などデフォルトで付いてしまってこまっています。 どなたか教えていただけると幸いです。 0183デフォルトの名無しさん2018/06/07(木) 01:04:11.81ID:0bVyIKBb>>182 事前に名前を取得すればいいだろ 馬鹿なの? 0184デフォルトの名無しさん2018/06/07(木) 01:32:35.30ID:+AIz84RJ>>182 Private Sub hoge() Dim title As String Dim pro As String Dim default As String Dim rtn As String
On Error GoTo Errhd
ThisWorkbook.Worksheets(1).Copy after:=ThisWorkbook.Worksheets(1) title = "シート名の入力" pro = "追加したシート名の名前を入力して下さい" pro = pro & vbCrLf & "キャンセルすると規定のシート名です" default = "ここに入力してね" rtn = InputBox(pro, title, default) If Len(Trim(rtn)) <> 0 Then ActiveSheet.Name = rtn 'ActiveSheetは使いたくないなー End If Exit Sub
Errhd: If Err.Number = 1004 Then MsgBox "シート名が重複してます。規定のシート名にします" Else MsgBox "エラー:" & Err.Description & "エラーNo:[" & CStr(Err.Number) & "]" End If End Sub 0185デフォルトの名無しさん2018/06/07(木) 06:57:02.78>>184 VBAの前に日本語を勉強しようか 0186デフォルトの名無しさん2018/06/07(木) 08:28:08.10ID:5slOqNk5>>185 流石プロ いう事が違う 0187デフォルトの名無しさん2018/06/07(木) 08:33:39.02ID:SHzt2OxM>>185 そだねー 0188デフォルトの名無しさん2018/06/07(木) 12:07:36.63ID:iCODZEhm>>184 文法がすげぇ 0189デフォルトの名無しさん2018/06/07(木) 18:44:38.31ID:7ubMCfWs プロさんはソースコードレビューでコメントの日本語の指摘ばかりうけるので ここで日本語の指摘して憂さ晴らししとるんやで 察してさしあげろ 0190デフォルトの名無しさん2018/06/07(木) 21:10:45.98ID:3qk59262 カーネルナンチャラのいみがわからん 0191デフォルトの名無しさん2018/06/07(木) 21:14:30.25>>189 いやそもそも>>182の要件を一切満たしてないし
読解力はどこへ行ったのか 0192デフォルトの名無しさん2018/06/07(木) 21:42:02.76ID:WN2hA1TZ>>182 勝手に(2)になるってことは、シートのコピー自体をマクロでやってるってことかな? 1枚だけならともかく、複数シートのコピーとか考慮するとかなり難しいと思う。 1枚でも同じ名前があればコピー中止するのか、(2)になるのだけを中止するのか。 現在のコード見てみないとなんとも言えないを 0193デフォルトの名無しさん2018/06/07(木) 21:47:48.41ID:uqa5AZHU foreachでシート名取得すればどうとでも出来ねーか? 0194デフォルトの名無しさん2018/06/07(木) 21:50:54.59ID:G9c1fl5R ForEachでWorksheetsコレクション回してコピー元のシート名と一致するか見れば済む話だろ 答える側のレベルも低すぎ 0195デフォルトの名無しさん2018/06/07(木) 22:29:02.37 For Each 回したりするくらいならこうだろ
Dim wks as Worksheet On Error Resume Next Set wks = Worksheets(sheetname) On Error GoTo 0 If Not wks Is Nothing Then …(重複時の処理)… 0196デフォルトの名無しさん2018/06/07(木) 22:31:47.53ID:l2af3llu 182です。 みなさんありがとうございます。 今の状況はこんなコードです。
Dim i As Long i = Worksheets("マスタ").Range("B3").Value
Dim myShName As String Dim myWS As Worksheet Dim myFlag As Boolean
myShName = Worksheets("マスタ").Range("B3").Value
For Each myWS In Worksheets If myWS.Name = myShName Then myFlag = True End If
Next myWS
If myFlag = True Then MsgBox "すでにあるためコピーしません", vbInformation Else Worksheets("鑑").Copy after:=Worksheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = myShName End If
End Sub 0199デフォルトの名無しさん2018/06/07(木) 22:53:51.61ID:l2af3llu ごめんなさい。197はスレを間違えました。失礼しました。 02001922018/06/07(木) 22:59:58.47ID:BzIZrc7A >197