- ベストアンサー
Excelマクロで文字列に*を追加する方法
- Excelのマクロを使って、特定の範囲に入力された文字列に*を追加する方法について教えてください。
- 現在のマクロでは、文字列を入力しても先頭に*が追加されない問題が発生しています。
- マクロの式の入力が間違っている可能性がありますが、どこが問題なのかわかりません。解決方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- 指定文字のみセルコピーする方法
sheet1(表-1)の入力文字「A,C,F,H」をsheet2へコピーする。 sheet2(表-3)のように[A,C,F,H」以外及びsheet1空白のセルはsheet2でも空白としたい。 その際、sheet2(表-2)に入力済みの記号「○、●、◎」はそのまま残したい。 下記のコードでは、sheet2に入力済みの記号「○、●、◎」が消えてしまいます。 どなたかコードがわかる方よろしくお願いします。 Sub シートコピー() Dim r As Range For Each r In Worksheets("Sheet1").Range("B1:F10") If WorksheetFunction.CountIf(Range("A14:A18"), r.Value) Then Sheets("sheet2").Range(r.Address).Value = r.Value Else Sheets("sheet2").Range(r.Address).Value = "" End If Next End Sub セルA18に"0"を入力して実行してもsheet1空白セルはsheet2でも空白となり困っています。
- ベストアンサー
- Visual Basic
- 条件に従ってセルに入力の構文の簡素化
よろしくお願いします。 ComboBox4の値を条件(20行づつ下)に従ってセルに入力するのですが 構文の簡素化はできないでしょうか With Worksheets("写真") If ComboBox5.Value = "1" Then .Range("R34").Value = ComboBox4.Value ElseIf ComboBox5.Value = "2" Then .Range("R54").Value = ComboBox4.Value ElseIf ComboBox5.Value = "3" Then .Range("R74").Value = ComboBox4.Value ElseIf ComboBox5.Value = "4" Then .Range("R94").Value = ComboBox4.Value ~ ElseIf ComboBox5.Value = "48 Then .Range("R994").Value = ComboBox4.Value ElseIf ComboBox5.Value = "49" Then .Range("R1014").Value = ComboBox4.Value ElseIf ComboBox5.Value = "50" Then .Range("R1034").Value = ComboBox4.Value End If
- ベストアンサー
- Excel(エクセル)
- 指定記号のみ別シートにコピー
sheet1(表-1)の入力文字「A,C,E」をsheet2へコピーする。 sheet2(表-3)のように[A,C,E」以外及びsheet1空白のセルはsheet2でも空白としたい。 その際、sheet2(表-2)に入力済みの記号「○、●、◎」はそのまま残したい。 下記のコードでは、sheet2に入力済みの記号「○、●、◎」が消えてしまいます。 どなたかコードがわかる方よろしくお願いします。 Sub シートコピー() Dim r As Range For Each r In Worksheets("Sheet1").Range("B1:D5") If WorksheetFunction.CountIf(Range("A8:A10"), r.Value) Then Sheets("sheet2").Range(r.Address).Value = r.Value Else Sheets("sheet2").Range(r.Address).Value = "" End If Next End Sub セルA11に"0"を入力して実行してもsheet1空白セルはsheet2でも空白となり困っています。
- ベストアンサー
- Visual Basic
- 特定範囲のセルの最終文字1文字を削除
よろしくお願いします。 Sheet1のJ26からJ56の、セルに入れた文字の最終文字1文字を 削除して表示したいのですが、下の構文で、 For Each r In Application.Selectionが黄色くエラー表示されます。 どこをどのように直せばよいのか解りません。 よろしくお願いします。 Private Sub CommandButton1_Click() Dim r As Range r = Worksheets("Sheet1").Range("J26:J56") For Each r In Application.Selection If Len(r.Value) > 0 Then r.Value = Left(r.Value, Len(r.Value) - 1) End If End Sub Next
- ベストアンサー
- Excel(エクセル)
- ExcelVBA データのコピー範囲について
あけましておめでとうございます。今年もよろしくお願いします。 Sub Test() Dim myTarget As Range, r As Range, f Set myTarget = Sheets("Sheet1"). _ Range("B2", Sheets("Sheet1").Range("B65536").End(xlUp)) For Each r In myTarget Set f = Sheets("Sheet2").Columns(1). _ Find(r.Value, Sheets("Sheet2").Range("A1"), Lookat:=xlWhole) If Not f Is Nothing Then If r.Offset(0, 3).Value <> f.Offset(0, 3).Value Then f.Resize(1, 4).Copy Destination:= _ Sheets("Sheet3").Range("A65536").End(xlUp).Offset(1, 0) End If End If Next r End Sub 前回の質問で教えていただいたコードなのですが、現時点では、B列のデータを元にして二つのSheetのデータを比較して別Sheetへコピーしているのですが、そのときに、B列以降の(たとえば、B列からX列まで)データはコピーできますが、A列もコピーしたい時はどうすればよいのかで、悩んでいます。どの様に変更すればよいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- セル範囲指定方法
VBAにて下記作成中ですが、行き詰ってしまいました。 どなたか、ご教授願います。 Sub 転記ボックス1_Click() Sheets("S").Select Range("N13").Select If ActiveCell.Value <> "" Then Selection.Copy Sheets("H").Select Range("K65536").End(xlUp).Offset(0, 1).Select --->シートH、K列最終行の右隣からL列最終行の範囲を指定 上記指定範囲内全てに、シートS・N13の値を貼付 ElseIf ActiveCell.Value = "" Then Sheets("H").Select Range("K65536").End(xlUp).Offset(0, 1).Select --->シートH、K列最終行の右隣からL列最終行の範囲を指定 上記指定範囲内全てに、”シートS・N13”と入力 End If End Sub --->部分の書き方がわかりません。 よろしくお願いします。
- ベストアンサー
- その他(ビジネス・キャリア)
- VBA 特定のシートが選択されていたら、セル入力
Excel365。簡略化したVBAです。 現在、「あ」というシートが選択されていたら、「あ」シートの「A1」セルに「a」と入力 「い」というシートが選択されていたら「い」シートの「A1」セルに「i」と入力。 それ以外のシートが選択されていたら、何もしない。 If Sheets("あ").Activate Then Range("A1") = "a" ElseIf Sheets("い").Activate Then Range("A1") = "i" Else 以下省略 「い」シート選択中でも、「あ」シートの「a1」セルに入力され、シートを増やしても、「あ」シートの「a1」セルに入力されます。 「い」シートを入力していません。 簡単だと思っていたのですが…。 どんなコードになるのでしょうか?
- ベストアンサー
- Excel(エクセル)
- 指定した範囲のセル内の数値を検索したい(VBA)
いつもありがとうございます。 また皆様のお知恵を拝借したいと思い質問をさせて頂きました。 現在VBAを勉強中なのですが、以下の場合、コードはもっと簡単になるでしょうか? 【やりたい事】 プログラムを実行すると、シート2に数値が返されます。 ※数値が返される範囲は「A1~A100」だとします。 シート2の「A1~A100」には「1~4」の数値が返され、それぞれの数値が何個あるかを検索。 検索した結果を、「シート1」の指定したセルに表示する。 【記述したコード】 dim x as integer x = 0 For x = 1 To 101 If Sheets("シート2").Cells(x, 1) = "1" Then 1count = 1count + 1 End If If Sheets("シート2").Cells(x, 1) = "2" Then 2count = 2count + 1 End If If Sheets("シート2").Cells(x, 1) = "3" Then 3count = 3count + 1 End If If Sheets("シート2").Cells(x, 1) = "4" Then 4count = 4count + 1 End If Next x 上記のコードで「"x"count」に数値を加算していき、最終的に以下のように各数値をシート1に表示させています。 Sheets("シート1").Range("A1") = 1count Sheets("シート1").Range("A2") = 2count Sheets("シート1").Range("A3") = 3count Sheets("シート1").Range("A4") = 4count 結果的にはうまくカウントされて、結果も正しく表示されるのですが、 列をまとめて検索してやる方法などがあれば、もっと短く分かりやすく おさまるのではと思い、質問をさせて頂きました。 こうやるともっと簡単にできるよなどがあれば、教えて頂けないでしょうか。 Excelの関数などを使用しても構いません。 以上、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 【Excel VBA】ワークシートの表示(続き)
すみません。 追記が出来なかったため、コードの続きをこちらに記載します。 For i = 1 To 12 If actsht = tmp(i) Then Flag = 1 Anser = MsgBox("翌月分シートを作成しますか?", vbYesNo + vbDefaultButton1, "確認") If Anser = vbYes Then ActiveSheet.Copy After:=ActiveSheet ActiveSheet.Name = tmp(i + 1) Sheets(actsht).Tab.ColorIndex = 2 Sheets(actsht).Range("B3").Value = Sheets("Sheet2").Range("A1").Value Sheets(actsht).Range("B4").Value = Sheets("Sheet2").Range("A2").Value ActiveSheet.Range("A2").Select Exit For ElseIf Anser = vbNo Then Exit For End If End If Next If Flag = O Then MsgBox ("新しいワークシートを作成出来ません。") End If If actsht = tmp(i) Then If Sheets(元データ).Visible = False Then Sheets(元データ).Visible = True End If End If End Sub
- 締切済み
- 情報工学
- 指定範囲のセルが変更されたら
下記のコードで1つのセル(A1)が変更されたら入力前の元データを別シート(A1)に保存できるようにしたのですが、指定範囲(I10:CW42,2行3列を一升)のセルが変更されたら別シートの指定範囲(I10:CW42)に保存できるようにしたいのですが方法がありましたらお教え下さい。お願いします。 Windows7・SP1 Office2010 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub Application.EnableEvents = False Application.Undo Sheets("Sheet2").Range("A1").Value = Range("A1").Value Application.Undo Application.EnableEvents = True End Sub
- ベストアンサー
- Visual Basic
お礼
ご連絡ありがとうございます。 For each in にシート名を明示的に表示してうまくいくようになりました。 またシート名ですが、毎回シート名が変わり、必ず2枚目をデータとして使うので 明示的に表示することができませんでしたので、これはとりあえず現状のままに しておきます。 ありがとうございました。 シート名の明示に気がつきませんでした。