このトピックに書きこむ |
---|
Re[3]: 範囲指定した後にダブルクリックして表示文字を選択 | |
---|---|
[195826] Re[3]: 範囲指定した後にダブルクリックして表示文字を選択- ■記事引用/メール受信=OFF■ □投稿者/ 阿藤快 -(2023/07/26(12:48)) □U R L/ chatGPT なんだかなぁ |
[195825] Re[2]: 範囲指定した後にダブルクリックして表示文字を選択- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2023/07/26(08:10)) □U R L/ 失礼します。 >どこに問題があるのか教えていただけないでしょうか? たぶんChatGPTに対する質問文に問題があると思います。 何て質問しましたか? 半平太様がおっしゃる他にも不明点が有ります。 ・例えば、A1="A",B1="C"の時、A1:B1セルを選択してダブルクリックしたら、 A1="B",B1="/" ですか? A1="B",B1="B" ですか? ・上記どちらの場合でもセル数が多いとかなり時間がかかってしまいます。 セル制限はどのように指定すれば良いですか? ・例えば、A1:B1セルを選択してC1セルをダブルクリックしたら、発動させますか? ・6回目以降はどうなれば良いのですか? |
[195824] Re[1]: 範囲指定した後にダブルクリックして表示文字を選択- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2023/07/25(22:50)) □U R L/ >さて、今回は範囲指定した後、 これは具体的にどう指定するのですか? マウスでドラッグ選択? (この場合、ダブルクリックすると選択解除されると思うのですが・・) プログラム内で決め打ち指定? |
[195823] 範囲指定した後にダブルクリックして表示文字を選択- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ 陳Q -(2023/07/25(13:23)) □U R L/ いつもお世話になっております。 さて、今回は範囲指定した後、 ダブルクリックを1回すると、指定範囲のすべてのセルが A、2回でB、3回でC、4回で/、5回でAに戻る、というマクロを組みたいと思いました。 CHAT-GPTにお願いしたところ、 以下のコードが出てきましたが、 実際にやってみるとエラーが出てしまいました。 どこに問題があるのか教えていただけないでしょうか? Dim clickCounts As Collection Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("A1:A40")) Is Nothing Then If clickCounts Is Nothing Then Set clickCounts = New Collection InitializeClickCounts ' データ入力範囲のクリック回数を初期化 End If Dim cellCount As Integer cellCount = Target.Cells.Count Dim i As Integer For i = 1 To cellCount Dim currentCell As Range Set currentCell = Target.Cells(i) Dim currentCount As Integer currentCount = clickCounts(currentCell.Address) currentCount = currentCount + 1 Select Case currentCount Case 1 currentCell.Value = "A" Case 2 currentCell.Value = "B" Case 3 currentCell.Value = "C" Case 4 currentCell.Value = "/" currentCount = 0 ' リセットして再度Aから始める Case Else currentCount = 1 ' リセットしてAから再開 currentCell.Value = "A" End Select clickCounts(currentCell.Address) = currentCount Next i Cancel = True ' ダブルクリックイベントをキャンセルして、シングルクリックのみ有効にする End If End Sub Private Sub InitializeClickCounts() Dim rng As Range Set rng = Range("A1:A40") ' データ入力範囲を指定(必要に応じて変更) Dim cell As Range For Each cell In rng clickCounts.Add 1, cell.Address Next cell End Sub どうぞよろしくお願いいたします。 この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |